CN114157619A - 报文缓存管理方法、装置及网络处理器 - Google Patents
报文缓存管理方法、装置及网络处理器 Download PDFInfo
- Publication number
- CN114157619A CN114157619A CN202111448375.0A CN202111448375A CN114157619A CN 114157619 A CN114157619 A CN 114157619A CN 202111448375 A CN202111448375 A CN 202111448375A CN 114157619 A CN114157619 A CN 114157619A
- Authority
- CN
- China
- Prior art keywords
- cache
- message
- descriptor
- data
- memory
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9078—Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Abstract
本发明实施例涉及一种报文缓存管理方法、装置及网络处理器,该方法包括:接收中央处理器下发的报文缓存管理指令;向中央处理器反馈接收到报文缓存管理指令的第一响应信息;根据报文缓存管理指令,获取报文的报文指示信息;根据报文指示信息,向缓存管理器申请第一存储器中用于缓存报文的存储地址;当申请成功后,生成数据搬移指令;将数据搬移指令发送至缓存控制器。通过该方式,CPU在完成报文的协议解析等处理之后,即可释放当前处理报文的线程。省去CPU等待报文搬移完成的整个过程,大大节省CPU处理报文的时间。
Description
技术领域
本发明实施例涉及网络通信技术领域,尤其涉及一种报文缓存管理方法、装置及网络处理器。
背景技术
在网络处理器中,接收和转发速率是最重要的性能指标,而CPU是网络处理器的核心部件,可以通过提升CPU算力、减少CPU等待时间或者降低CPU需要执行的指令来实现高性能要求。目前商用的架构中,待处理的报文信息会放在缓存容量有限但访存延时小的片内缓存(Internal Memory,简称IMEM)中,从而加快CPU处理报文的效率。但基于面积、性能和功耗的考虑,IMEM片内缓存不能过大且对CPU的性能要求要降到最低。
当网络处理的流量管理模块配置队列限速或者出口拥塞时,放置报文的IMEM会很快耗尽,所以需要将处理完的报文从IMEM搬移到缓存容量较大的片外缓存(ExternalMemory,简称EMEM)中。
但是现有的实现方式中,执行处理报文的搬移过程中,CPU仅执行前期一部分工作,具体的报文搬移则由其他部件执行。真正执行报文搬移时,CPU中线程不能再执行其他工作,只能被动等待搬移结束后,才能释放线程,使得CPU的资源被严重浪费。而且,当CPU的所有线程均被占用时,整个CPU就会stall,严重浪费CPU的处理能力,进而降低报文的转发性能。如此一来,不仅没有提升CPU的性能,此方案反倒是成了提升CPU性能的瓶颈。
发明内容
本申请提供了一种报文缓存管理方法、装置及网络处理器,以解决现有技术中因为使用CPU线程,将报文从IMEM中搬移到EMEM的过程中存在被动等待过程,使得CPU资源被严重浪费,而且,当CPU线程全部被占用后,CPU无法继续处理其他工作,CPU处理性能大大降低的问题。
第一方面,本申请提供了一种报文缓存管理方法,该方法包括:
接收中央处理器下发的报文缓存管理指令,报文缓存管理指令为中央处理器对获取的报文执行预设处理后下发的命令;
向中央处理器反馈接收到报文缓存管理指令的第一响应信息,以便中央处理器释放当前处理报文的线程;
根据报文缓存管理指令,获取报文的报文指示信息;
根据报文指示信息,向缓存管理器申请第一存储器中用于缓存报文的存储地址;
当申请成功后,生成数据搬移指令;
将数据搬移指令发送至缓存控制器,以便缓存控制器从第二存储器中,将与数据搬移指令对应的数据搬移至存储地址的对应位置处,其中,第二存储器中存储有中央处理器处理后的报文,与数据搬移指令对应的数据为报文包含的数据。
第二方面,本申请提供了一种报文缓存管理装置,该装置包括:
接收模块,用于接收中央处理器下发的报文缓存管理指令,报文缓存管理指令为中央处理器对获取的报文执行预设处理后下发的命令;
发送模块,用于向中央处理器反馈接收到报文缓存管理指令的第一响应信息,以便中央处理器释放当前处理报文的线程;
获取模块,用于根据报文缓存管理指令,获取报文的报文指示信息;
申请模块,用于根据报文指示信息,向缓存管理器申请第一存储器中用于缓存报文的存储地址;
生成模块,用于当申请模块申请成功后,生成数据搬移指令;
发送模块,还用于将数据搬移指令发送至缓存控制器,以便缓存控制器从第二存储器中,将与数据搬移指令对应的数据搬移至存储地址的对应位置处,其中,第二存储器中存储有中央处理器处理后的报文,与数据搬移指令对应的数据为报文包含的数据。
第三方面,提供了一种网络处理器,包括中央处理器和缓存移动引擎,缓存移动引擎,用于执行如第一方面任一项实施例的报文缓存管理方法的步骤。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被缓存移动引擎执行时实现如第一方面任一项实施例的报文缓存管理方法的步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本申请实施例提供的该方法,接收中央处理器下发的报文缓存管理指令,然后向中央处理器反馈接收到报文缓存管理指令的第一响应信息。以便于中央处理器可以释放当前处理报文的线程。接下来的工作,则由缓存移动引擎执行,包括根据报文缓存管理指令,获取报文的报文指示信息;根据报文指示信息,向缓存管理器申请第一存储器中用于缓存报文的存储地址;当申请成功后,生成数据搬移指令;将数据搬移指令发送至缓存控制器,以便缓存控制器从第二存储器中,将与数据搬移指令对应的数据搬移至存储地址的对应位置等操作。整个过程中,由缓存移动引擎替代CPU执行报文缓存管理操作,如此一来,CPU只需要完成报文的协议解析等处理操作,并在执行完成报文的协议解析等操作后,即可释放当前处理报文的线程,省去CPU等待报文搬移完成的整个过程,大大节省CPU处理报文的时间。而且,此种方式不会因为CPU的等待过程,使得所有线程都被占用,导致整个CPU stall,大大提升CPU的处理性能。
附图说明
图1为本发明实施例提供的一种报文缓存管理方法流程示意图;
图2为本发明实施例提供的另一种报文缓存管理方法流程示意图;
图3为本发明实施例提供的另一种报文缓存管理方法流程示意图;
图4为现有技术中报文缓存管理方法的整体流程框图;
图5为本发明提供的报文缓存管理方法整体流程框图;
图6为现有技术中CPU执行不同任务Job0和Job任务所需的时间的示意图;
图7为本发明提供的BME执行不同任务Job0和Job任务所需的时间的示意图;
图8为本发明实施例提供的一种报文缓存管理装置结构示意图;
图9为本发明实施例提供一种网络处理器结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
针对背景技术中所提及的技术问题,本申请实施例提供了一种报文缓存管理方法。在介绍本发明实施例提供的报文缓存管理方法之前,首先介绍报文缓存管理系统所涉及的系统架构。在该系统架构中,包括中央处理器,将其定义为第一处理器,例如是CPU,缓存移动引擎(Buffer Move Engine,简称BME)、缓存控制器,为具有访问内存功能,以及具有读写内存单元的一个功能模块,或者是一个应用程序,例如是直接访问缓存(DirectMemory Access,简称DME)、缓存管理器,例如是缓存管理单元(Buffer Management Unit,简称BMU)、第一存储器,例如是片外缓存(External Memory,简称EMEM),以及,第二存储器,例如是片内缓存(Internal Memory,简称IEME),其中,EMEM的存储空间远远大于IMEM的存储空间。
CPU在完成报文的协议解析等处理后,可以下发报文换缓存管理指令至BME。BME接收命令后,向中央处理器反馈接收命令成功的第一响应信息。此时,CPU即可释放当前处理报文的线程。CPU后续不在感知报文缓存管理进度,后续报文缓存管理的工作则直接交由BME处理。CPU则继续处理下一报文。也即是CPU从报文缓存管理的任务中解放出来,由此可以降低CPU处理的负荷,同时,还能保证数据缓存管理和报文处理高度并行。
由于剩下的工作将由BME执行,因此BME会根据报文缓存管理指令,获取报文的报文指示信息。然后根据报文指示信息,向BMU申请在第一存储器中可以缓存报文的存储地址。其原因主要是考虑到后续需要将报文中的数据从第二存储器迁移到第一存储器中。所以需要向缓存管理器申请在第一存储器中用于缓存报文的存储地址。然后,在申请成功后,生成数据搬移指令,将数据搬移指令发送至缓存控制器,由缓存控制器根据数据搬移指令,访问第二存储器,并从第二存储器中将与数据搬移指令对应的数据搬移至第一存储器存储地址的对应位置处。之所以从第二存储器中搬移数据至第一存储器,是因为中央处理器处理完报文后,将报文存储至第二存储器中。而与数据搬移指令对应的数据实际上为报文包含的数据,可以是部分数据,也可以是全部数据,具体根据实际情况设定,这里不做过多限定。
可选的,上述对于CPU、BME、BMU、DMA、IMEM,以及EMEM之前的通信,可以通过通信总线BUS来完成。
详细的过程将在下文中做具体介绍,具体参见下文提供的报文缓存管理方法。具体参见图1所示,图1为本发明实施例提供的一种报文缓存管理方法流程示意图,该方法由上文中所提及的缓存移动引擎执行,该方法步骤包括:
步骤110,接收中央处理器下发的报文缓存管理指令。
具体的,报文缓存管理指令为中央处理器对获取的报文执行预设处理后下发的命令,如上所介绍的,预设处理,也即是中央处理器根据报文解析协议解析完报文。在此之后,中央处理器会直接将报文缓存管理的工作下发给缓存移动引擎BME。然后BME则是接收中央处理器下发的报文缓存管理指令。
步骤120,向中央处理器反馈接收到报文缓存管理指令的第一响应信息。
具体的,中央处理器只有在确认BME接收到报文缓存管理指令后,才会释放当前处理的报文线程,以免存在某些意外,使得报文缓存管理工作无法执行。因此,BME在接收到报文缓存管理指令后,会向CPU发送第一响应信息,用以指示已经成功接收该指令,以便中央处理器释放当前处理报文的线程。
步骤130,根据报文缓存管理指令,获取报文的报文指示信息。
具体的,报文的报文指示信息包括与报文对应的任务描述符。进一步可选的,任务描述符存储有与第一缓存描述符对应的相关信息,例如位置指针。进而可以根据与第一缓存描述符对应的相关信息,来获取第一缓存描述符(Buffer Descriptor,简称BD),单个报文的全部数据会平均划分成至少一个数据块,每一个数据块对应一个BD,每个BD代表一块数据的起始地址指针。也即是,每一个BD代表每一个数据块在第二存储器中的存储地址的起始地址指针。
为了将报文从第一存储器中搬移到第二存储器中,又考虑到报文是以数据块的形式存储在第二存储器中,所以在进行数据搬移时,也需要以数据块的形式搬移到第一存储器中。所以,需要分别根据报文指示信息,向缓存管理单元BMU申请第一存储器中用于缓存报文的存储地址。即,执行步骤140。
步骤140,根据报文指示信息,向缓存管理器申请第一存储器中用于缓存报文的存储地址。
步骤150,当申请成功后,生成数据搬移指令。
在一个可选的例子中,数据搬移指令中可以包括但不限于如下信息:
数据的原地址、目的地址,搬移数据尺寸,如果缓存控制器服务多个处理器时,例如同时服务CPU和BME,或者同时服务多个CPU,CPU又包括多个线程,或者BME为多核,可以并行处理报文缓存指令,那么,在数据搬移指令中还需要包括发送命令的执行主体的ID信息,在本实施例中为BME的某个控制器的ID信息,或者如果BME仅包括单个控制器(单核),则为BME的ID信息。在其他情况中,DMA所接收的指令还可能是CPU ID,线程ID等。此外,搬移数据指令中还可以包括操作模式,例如包括安全模式,普通模式或高权限模式。数据传输通道,包括普通总线,以及PCIE总线等。
可选的,在本实施例中,BME为多核,用以并行处理报文缓存管理任务,充分利用数据总线,提高报文缓存管理效率。
在一种可选的实施方式中,BME的多个控制器可以分别执行数据搬移过程中的不同操作环节。每个控制器只执行一个或多个操作环节,其他操作环节则由其他控制器执行,即分工合作,提升工作效率。
也可以是在另一种可选的实施例中,BME的多个控制器分别执行一条数据搬移任务的完整过程。具体如何执行,可以根据实际情况设定。
步骤160,将数据搬移指令发送至缓存控制器。
具体的,在申请第一存储器中的存储地址成功后,则可以生成数据搬移指令,然后交由缓存控制器。并由缓存控制器执行数据搬移指令,将第二存储器中,与报文对应的数据块搬移至第一存储器存储地址的对应位置处。
其中,第二存储器中存储有中央处理器处理后的报文,与数据搬移指令对应的数据为报文包含的数据,该数据可以是报文中的报文中的全部数据或者部分数据,具体根据实际情况确定。
本发明实施例提供的报文缓存管理方法,接收中央处理器下发的报文缓存管理指令,然后向中央处理器反馈接收到报文缓存管理指令的第一响应信息。以便于中央处理器可以释放当前处理报文的线程。接下来的工作,则由缓存移动引擎执行,包括根据报文缓存管理指令,获取报文的报文指示信息;根据报文指示信息,向缓存管理器申请第一存储器中用于缓存报文的存储地址;当申请成功后,生成数据搬移指令;将数据搬移指令发送至缓存控制器,以便缓存控制器从第二存储器中,将与数据搬移指令对应的数据搬移至存储地址的对应位置等操作。整个过程中,由缓存移动引擎替代CPU执行报文缓存管理操作,如此一来,CPU只需要完成报文的协议解析等处理操作,并在执行完成报文的协议解析等操作后,即可释放当前处理报文的线程,省去CPU等待报文搬移完成的整个过程,大大节省CPU处理报文的时间。而且,此种方式不会因为CPU的等待过程,使得所有线程都被占用,导致整个CPU stall,大大提升CPU的处理性能。
在上述实施例的基础上,本发明实施例还提供了另一种报文缓存管理方法的实施例,为叙述简便,与上述实施例相同或类似的内容这里不再赘述。仅介绍当报文指示信息包括任务描述符时,根据报文指示信息,向缓存管理器申请第一存储器中用于缓存报文的存储地址的具体执行过程,具体参见图2所示,该方法流程可以包括:
步骤210,根据任务描述符,获取与报文对应的至少一个第一缓存描述符。
具体的,如上所介绍的,任务描述符中包括与第一缓存描述符对应的相关信息。更具体的来说,因为任务描述符中可以包括首个第一缓存描述符对应的地址指针、第一缓存描述符的类型信息,以及第一缓存描述符的数量信息等,同时还可以包括报文的业务类型信息。第一缓存描述符的类型不同,DMA后续执行的数据搬移的过程稍有差异。而业务类型信息,可以包括单播或组播,这些内容具体不再本申请实施例重点研究范围,这里不再过多介绍。
根据第一缓存描述符对应的地址指针,可以在第二存储器中获取到第一缓存描述符。在一种可选的情况中,如果报文为短报文,数据块的数量可以是一个,相应的,第一缓存描述符的数量可以为一个;如果报文为中长报文,或者长报文,则报文被分成的数据块的数量为至少两个。那么对应的第一缓存描述符的数量则不可能仅有一个,同样是包括至少两个。具体第一缓存描述符的数量可以从任务描述符中所获取到。所以,当第一缓存描述符的数量包括至少两个时,除了在任务描述符中包首个缓存描述符的地址指针(为与其他缓存描述符的地址指针相区别,这里定义为第一指针信息)情况下,还需要在首个第一缓存描述符中,携带有其他第一缓存描述符的地址指针(定义为第二指针信息),多个第一缓存描述符的地址指针在首个第一缓存描述符中的具体体现形式以缓存描述符链表LBD的形式体现。进而根据其他描述符的地址指针,可以从第二存储器中依次找到其他第一缓存描述符。
也即是,当第一缓存描述符的数量包括至少两个时,任务描述符中包括第一指针信息;
根据任务描述符,获取与报文对应的至少一个第一缓存描述符,具体包括:
根据第一指针信息,从第二存储器中获取目标第一缓存描述符,其中,目标第一缓存描述符为至少两个第一缓存描述符中的首个第一缓存描述符;目标第一缓存描述符中包括除首个第一缓存描述符之外的其他第一缓存描述符对应的第二指针信息;
根据第二指针信息,获取除首个第一缓存描述符之外的其他第一缓存描述符。
步骤220,根据每一个第一缓存描述符,向缓存管理器申请在第一存储器中与第一缓存描述符对应的第二缓存描述符。
具体的,如上所介绍的,报文在第二存储器中是以数据块的形式存储,第一缓存描述符用于指示数据块的缓存地址的起始地址指针。那么,如果将报文存储到第一存储器中,同样需要以数据块的形式进行存储,自然需要类似的地址指针,用以指示数据块的起始地址,所以需要向缓存管理器申请在第一存储器中与第一缓存描述符对应的第二缓存描述符。
其中,每一个BD代表每一个数据块在第二存储器中的存储地址的起始地址指针,也即是说明,第一缓存描述符用于指示报文在第二存储器中的存储地址。类似的道理,第二缓存描述符,用于指示报文在第一存储器中的存储地址。
可选的,本申请还提供了另一种报文缓存管理方法实施例,用以在上述实施例的基础上,进一步介绍根据至少一个第一缓存描述符,向缓存管理器申请在第一存储器中与第一缓存描述符对应的第二缓存描述符的具体方法流程,具体参见图3所示,该方法包括:
步骤310,根据预设数量的第一缓存描述符,向缓存管理器申请对应数量的第二缓存描述符。
如上所介绍的,任务描述符中包括BD的类型信息和BD的数量信息。
BD的类型,根据报文的类型决定,报文的类型包括短报文,中长报文,以及长报文。短报文对应的BD数量可能是1个即可。中长报文中的首个BD对应的存储空间,其他BD的地址指针不足以填充,还可以填充一些数据。长报文中,首个BD中将被所有其他BD的地址指针所占用。基于这些情况,将BD分为三种。而根据BD的类型不同,上文所提及的预设数量则稍有差别,例如短报文中BD数量仅为1个。那么,其实申请时候,仅根据一个第一缓存描述符,向缓存管理器申请一个第二缓存描述符即可。
长报文和中长报文,BD的数量为多个,在LBD链表中,每一行有3个BD,为了节省时间,以及提升工作效率,可以同时向缓存管理器申请3个BD的第二缓存描述符。
当然,也可以根据实际情况设定每次向缓存管理器申请BD的数量,不限于1个或3个,可以是2个,4个或者更多。
每次申请成功后,都会下发数据搬移指令至缓存控制器。缓存控制器根据数据搬移指令,将第二存储器中与预设数量的第一缓存描述符所对应的存储空间中的数据,依次搬移到第一存储器中对应第二缓存描述符所指示的存储地址。
具体而言,数据搬移指令中将携带第一缓存描述符、与第一缓存描述符对应的第二缓存描述符,以及与该第一缓存描述符对应的数据块的大小,或者待搬移数据的终止位置信息(第一缓存描述符指示数据的起始地址指针,所以可以确定待搬移数据块的起始地址,无需在数据搬移指令中再指示数据搬移的起始位置,只需携带用于指示搬移一个数据块中的部分或全部数据的终止位置的指示信息即可)等,用以指示将第二存储器中的第一缓存描述符所指示的存储地址的数据搬移到第一存储器中的对应存储地址。
在具体执行时,如果通过BMU在EMEM中申请的第二缓存描述符的数量为多个,那么BME可以下发多个数据搬移指令,以便DMA并行执行数据搬移过程。DMA每次完成数据搬移之后,会发送第二响应信息至BME。
步骤320,当接收到缓存控制器反馈的数据搬移完成的第二响应信息时,根据第二响应信息和当前剩余的第一缓存描述符,继续向缓存管理器申请第二缓存描述符,直至为当前剩余的每个第一缓存描述符,向第一存储器申请到对应的第二缓存描述符为止。
具体的,在接收到缓存控制器反馈的数据搬移完成的第二响应信息后,BME可以继续向BMU申请与剩余第一缓存描述符对应的第二缓存描述符。具体执行时,可以是在上一批预设数量的第一缓存描述符对应的存储空间中的数据均搬移至第一存储器后,接收到相应数量的第二响应信息后,再执行向缓存管理器申请第二缓存描述符,也可以是每接收到一个第二响应信息后,则申请一个第二缓存描述符,也可是在接收到第一个第二响应信息后,则执行下一批量的申请工作。具体的执行过程可以根据实际情况设定,这里不做任何限定。需要说明的是,考虑到如果是批量申请第二缓存描述符,到最后的时候剩余的缓存描述符不足上面所设定的预设数量,则在最后就是剩余几个,申请几个。例如预设数量是3个,最后一批仅剩下第二存储器中的2个BD没有申请第二缓存描述符。那么,最后一批则是仅申请余下的两个BD对应的第二缓存描述符。
重复执行步骤310至步骤320的操作,直至为每个第一缓存描述符,向第一存储器申请对应的第二缓存描述符后结束。
如上所介绍,即为根据至少一个第一缓存描述符,向缓存管理器申请在第一存储器中与第一缓存描述符对应的第二缓存描述符的一个可实施过程。
BME所执行的工作还包括如下内容:确认缓存控制器已经从每一个第一缓存描述符在第二存储中所对应的存储空间,将数据取出,并搬移至第一存储器中与每一个第一缓存描述符对应的第二缓存描述符所指示的存储空间才可以,具体的确认工作就是BME接收到相应数据搬移完成的第二响应信息。
由于缓存控制器对数据进行搬移的过程同现有技术,所以这里不再过多赘述。
在一个可选的例子中,考虑到每次数据搬移,都需要占用数据总线,为了进一步提升数据总线的利用率。在第一缓存描述符中还可以包括待搬移数据的指示信息,指示信息用于指示缓存控制器,从第二存储器中与预设数量的第一缓存描述符所对应的存储空间中提取与指示信息对应的数据进行搬移。
可选的,指示信息可以包括数据搬移起始地址、数据搬移偏移量以及数据搬移终止地址中的至少两个参数。用以计算出需要待搬移的数据。比如,数据块中有某些数据是不需要进行搬移的,那么这些数据将不被执行数据搬移工作,以节省总线的占用。
进一步可选的,当申请到与第一缓存描述符对应的第二缓存描述符后,还包括获取与第二缓存描述符对应的第三指针信息。因此,接收到缓存控制器反馈的搬移数据完成的第二响应信息之后,该方法还包括:
在第一存储器中第一缓存描述符对应的第一指针信息或第二指针信息所在的存储地址,将第一指针信息或第二指针信息更新为第三指针信息。
以方便后续当其他部件需要读取该数据报文时,可以根据第三指针信息,找到第一存储器(EMEM)中的对应位置,读取相应的数据内容。
图4和图5中分别示意出了CPU执行报文缓存管理的整体流程框图,以及BME采用本申请实施例的方法执行报文缓存管理的整体流程框图,分别参见图4和图5所示。
图4中,CPU根据报文描述符,确定BD的数量。然后通过接收模块Rx在每接收到DMA反馈的一个DMA done的响应信息后,自动对BD_number的数量减一。DMA done的响应信息用于指示完成一个BD的数据搬移过程。此时,释放一个BD,直至当最后一个BD,也即是首BD释放完成后,内部生成释放结束Relese Done的信息给到接收模块Rx,CPU发送数据搬移结束的指令给后续处理模块(图中未显示)。
在数据搬移过程中,CPU下发的是DMA CMD指令通过总线BUS给到DMA,DMA接收到DMA CMD指令后,发送RD读取指令到IMEM,然后在读取到数据后,发送WR写指令到EMEM,在写结束后,发送done指令通过总线到CPU,CPU一侧接收到的是DMA done指令,一条BD对应的数据搬移过程结束。
在此过程中,CPU的线程始终是被占用的,不能再执行其他任务。只能被动等待。具体参见图6所示,图6示出CPU执行不同任务Job0和Job任务所需的时间。
图5中示出了当CPU将报文缓存管理任务交给BME后的方法流程示意图。在图5中,CPU仅仅是完成报文的协议解析等处理,之后可以下发报文缓存管理命令BME CMD给BME。然后,BME完全可以充当CPU的角色执行图4中CPU所执行的工作。具体参见上文描述,这里不再赘述。
图7中是示意出BME执行不同任务Job0和Job任务所需的时间。对比可以看出因为本申请中无需CPU等待整个报文搬移任务全部完成,节省了等待时间,大大提升了工作效率。而且,数据报文的处理和报文缓存管理并行进行,不仅提升了CPU的使用性能,还提高了数据报文的处理效率。而且,因为BME为专用加速器,其对报文缓存管理消耗的时间也会低于用CPU管理所消耗的时间,进一步提升工作效率。
此外,上述过程实现了将IMEM缓存释放和新报文解析并行处理。不过,也需要结合相关配置和DMA最大处理性能,保证BME对DMA的请求操作和CPU对DMA的请求操作能够达到动态平衡,在满足基本性能的要求下,避免BME的请求操作不会对CPU使用DMA造成堵塞。
在一个可选的例子中,根据BD的类型不同,BME中执行的操作也稍有不同。具体的,可以将BME执行的流程分为0到11等12个阶段。BME中包括整体控制模块、用于申请数据、读数据的交互模块、申请释放模块,发送模块、接收模块,调度模块,以及缓存模块等。各模块功能为现有技术,这里不再赘述。在BME中,针对BD类型(或报文类型)不同,所执行的操作稍有差异,具体参见如下:
例如,12个阶段包括:
0.读取报文描述符指针。
1.根据报文描述符指针读取报文描述符。
2.分发和提取报文描述符信息。
3.将位于IMEM中的1st BD的搬移命令发送到DMA命令重组与发送模块。
4.等待申请位于EMEM的BD。
5.将EMEM中的BD回写值至报文描述中原先1st BD占据的字段。
6.等待1st BD完成DMA操作。
7.取回一行BD,即3个BD。
8.等待获得三个EMEM的BD。
9.将三个EMEM BD回写至1st BD缓存原始IMEM一行BD的字段中。
10.等待报文所有的DMA操作全部完成。
11.发送释放报文命令。
以上,三种类型BD类型报文的阶段跳转说明如下:
短包报文,BD类型为single BD,其阶段跳转如下:
0–>1–>2–>3–>4–>5–>11
中长包报文,BD类型为ELBD,其阶段跳转如下:
0–>1–>2–>7–>8–>9–>10–>3–>4–>5–>6–>11
长包报文,BD类型为LBD,其阶段跳转如下:
0–>1–>2–>3–>4–>5–>6–>7–>8–>9–>10–>11。
需要说明的是,当BD类型为ELBD时,如上所介绍的,说明首BD中包含其它BD指针和部分报文数据,需要将包含的所有BD指针更新成新的目的BD指针后,才能搬移首BD。所以跳过3-6执行搬移首BD的阶段,直接从阶段2跳转到阶段7,执行完其他阶段后,再执行3-6的阶段,最后执行阶段11。
而在BD类型为LBD时,LBD类型中首BD不包含报文数据,所以可以不使用DMA指令进行数据搬移。再申请到新的BD指针(EMEM中首BD指针)后,可以直接通过总线将新的BD指针对旧的BD指针进行覆盖,所以,也就需要先获得首BD的目的BD,因此,在执行阶段1和2后,会顺序执行阶段3-6。然后再顺序执行其他阶段。
此部分并非本实例重点描述的内容,因此不再过多介绍。
以上,为本申请所提供的报文缓存管理几个方法实施例,下文中则介绍说明本申请所提供的报文缓存管理其他实施例,具体参见如下。
图8为本发明实施例提供的一种报文缓存管理装置,该装置包括:接收模块801、发送模块802、获取模块803、申请模块804,以及生成模块805。
接收模块801,用于接收中央处理器下发的报文缓存管理指令,报文缓存管理指令为中央处理器对获取的报文执行预设处理后下发的命令;
发送模块802,用于向中央处理器反馈接收到报文缓存管理指令的第一响应信息,以便中央处理器释放当前处理报文的线程;
获取模块803,用于根据报文缓存管理指令,获取报文的报文指示信息;
申请模块804,用于根据报文指示信息,向缓存管理器申请第一存储器中用于缓存报文的存储地址;
生成模块805,用于当申请模块804申请成功后,生成数据搬移指令;
发送模块802还用于,将数据搬移指令发送至缓存控制器,以便缓存控制器从第二存储器中,将与数据搬移指令对应的数据搬移至第一存储器存储地址的对应位置处,其中,第二存储器中存储有中央处理器处理后的报文,与数据搬移指令对应的数据为报文包含的数据。
可选的,报文指示信息包括与报文对应的任务描述符;
申请模块804,具体用于根据任务描述符,获取与报文对应的至少一个第一缓存描述符,其中第一缓存描述符用于指示报文在第二存储器中的存储地址;
根据每一个第一缓存描述符,向缓存管理器申请在第一存储器中与第一缓存描述符对应的第二缓存描述符,第二缓存描述符用于指示报文在第一存储器中的存储地址。
可选的,当第一缓存描述符的数量包括至少两个时,任务描述符中包括第一指针信息;
申请模块804具体用于,根据第一指针信息,从第二存储器中获取目标第一缓存描述符,其中,目标第一缓存描述符为至少两个第一缓存描述符中的首个第一缓存描述符;目标第一缓存描述符中包括除首个第一缓存描述符之外的其他第一缓存描述符对应的第二指针信息;
根据第二指针信息,获取除首个第一缓存描述符之外的其他第一缓存描述符。
可选的,申请模块804具体用于,根据预设数量的第一缓存描述符,向缓存管理器申请对应数量的第二缓存描述符;
接收模块801,具体用于接收缓存控制器反馈的搬移数据完成的第二响应信息;
申请模块804还用于,当接收模块801接收到缓存控制器反馈的数据搬移完成的第二响应信息时,根据第二响应信息和当前剩余的第一缓存描述符,继续向缓存管理器申请第二缓存描述符,直至为当前剩余的每个第一缓存描述符,向第一存储器申请到对应的第二缓存描述符为止;
其中,第二响应信息为缓存控制器根据数据搬移指令,将第二存储器中与预设数量的第一缓存描述符所对应的存储空间中的数据,依次搬移至第一存储器中第二缓存描述符所指示的存储地址后生成的响应信息。。
可选的,该装置还包括:覆盖模块806;
获取模块803还用于,当申请到与第一缓存描述符对应的第二缓存描述符后,获取与第二缓存描述符对应的第三指针信息;
覆盖模块806,用于在第一存储器中第一缓存描述符对应的第一指针信息或第二指针信息所在的存储地址,将第一指针信息或第二指针信息更新为第三指针信息。
可选的,第一缓存描述符包括待搬移数据的指示信息;指示信息用于指示缓存控制器,从第二存储器中与第一缓存描述符所对应的存储空间中提取与指示信息对应的数据进行搬移。
本发明实施例提供的报文缓存管理装置中各部件所执行的功能均已在上述任一方法实施例中做了详细的描述,因此这里不再赘述。
本发明实施例提供的一种报文缓存管理装置,接收中央处理器下发的报文缓存管理指令,然后向中央处理器反馈接收到报文缓存管理指令的第一响应信息。以便于中央处理器可以释放当前处理报文的线程。接下来的工作,则由缓存移动引擎执行,包括根据报文缓存管理指令,获取报文的报文指示信息;根据报文指示信息,向缓存管理器申请第一存储器中用于缓存报文的存储地址;当申请成功后,生成数据搬移指令;将数据搬移指令发送至缓存控制器,以便缓存控制器从第二存储器中,将与数据搬移指令对应的数据搬移至第一存储器存储地址的对应位置等操作。整个过程中,由缓存移动引擎替代CPU执行报文缓存管理操作,如此一来,CPU只需要完成报文的协议解析等处理操作,并在执行完成报文的协议解析等操作后,即可释放当前处理报文的线程,省去CPU等待报文搬移完成的整个过程,大大节省CPU处理报文的时间。而且,此种方式不会因为CPU的等待过程,使得所有线程都被占用,导致整个CPU stall,大大提升CPU的处理性能。
如图9所示,本申请实施例提供了一种网络处理器,包括中央处理器111和缓存移动引擎112。
在本申请一个实施例中,缓存移动引擎112,用于执行如前述任意一个方法实施例提供的报文缓存管理方法。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被缓存移动引擎执行时,实现如前述任意一个方法实施例提供的报文缓存管理方法的步骤。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种报文缓存管理方法,其特征在于,所述方法包括:
接收中央处理器下发的报文缓存管理指令,所述报文缓存管理指令为所述中央处理器对获取的报文执行预设处理后下发的命令;
向所述中央处理器反馈接收到所述报文缓存管理指令的第一响应信息,以便所述中央处理器释放当前处理所述报文的线程;
根据所述报文缓存管理指令,获取所述报文的报文指示信息;
根据所述报文指示信息,向缓存管理器申请第一存储器中用于缓存所述报文的存储地址;
当申请成功后,生成数据搬移指令;
将所述数据搬移指令发送至缓存控制器,以便所述缓存控制器从第二存储器中,将与所述数据搬移指令对应的数据搬移至所述存储地址的对应位置处,其中,所述第二存储器中存储有所述中央处理器处理后的报文,与所述数据搬移指令对应的数据为所述报文包含的数据。
2.根据权利要求1所述的方法,其特征在于,所述报文指示信息包括与所述报文对应的任务描述符;所述根据所述报文指示信息,向缓存管理器申请第一存储器中用于缓存所述报文的存储地址,具体包括:
根据所述任务描述符,获取与所述报文对应的至少一个第一缓存描述符,其中所述第一缓存描述符用于指示所述报文在所述第二存储器中的存储地址;
根据每一个所述第一缓存描述符,向所述缓存管理器申请在第一存储器中与所述第一缓存描述符对应的第二缓存描述符,第二缓存描述符用于指示所述报文在所述第一存储器中的存储地址。
3.根据权利要求2所述的方法,其特征在于,当所述第一缓存描述符的数量包括至少两个时,所述任务描述符中包括第一指针信息;所述根据所述任务描述符,获取与所述报文对应的至少一个第一缓存描述符,具体包括:
根据所述第一指针信息,从所述第二存储器中获取目标第一缓存描述符,其中,所述目标第一缓存描述符为至少两个所述第一缓存描述符中的首个第一缓存描述符;所述目标第一缓存描述符中包括除首个第一缓存描述符之外的其他第一缓存描述符对应的第二指针信息;
根据所述第二指针信息,获取除所述首个第一缓存描述符之外的其他第一缓存描述符。
4.根据权利要求2或3所述的方法,其特征在于,所述根据至少一个所述第一缓存描述符,向所述缓存管理器申请在第一存储器中与所述第一缓存描述符对应的第二缓存描述符,具体包括:
根据预设数量的第一缓存描述符,向所述缓存管理器申请对应数量的第二缓存描述符;
当接收到所述缓存控制器反馈的数据搬移完成的第二响应信息时,根据所述第二响应信息和当前剩余的第一缓存描述符,继续向所述缓存管理器申请第二缓存描述符,直至为当前剩余的每个第一缓存描述符,向所述第一存储器申请到对应的第二缓存描述符为止;
其中,所述第二响应信息为所述缓存控制器根据所述数据搬移指令,将所述第二存储器中与所述预设数量的第一缓存描述符所对应的存储空间中的数据,依次搬移至所述第一存储器中所述第二缓存描述符所指示的存储地址后生成的响应信息。
5.根据权利要求4所述的方法,其特征在于,当申请到与所述第一缓存描述符对应的第二缓存描述符后,还包括:
获取与所述第二缓存描述符对应的第三指针信息;
在接收到所述缓存控制器反馈的数据搬移完成的第二响应信息之后,所述方法还包括:
在所述第一存储器中所述第一缓存描述符对应的第一指针信息或第二指针信息所在的存储地址,将所述第一指针信息或所述第二指针信息更新为所述第三指针信息。
6.根据权利要求2所述的方法,其特征在于,所述第一缓存描述符包括待搬移数据的指示信息;所述指示信息用于指示所述缓存控制器,从第二存储器中与第一缓存描述符所对应的存储空间中提取与所述指示信息对应的数据进行搬移。
7.一种报文缓存管理装置,其特征在于,所述装置包括:
接收模块,用于接收中央处理器下发的报文缓存管理指令,所述报文缓存管理指令为所述中央处理器对获取的报文执行预设处理后下发的命令;
发送模块,用于向所述中央处理器反馈接收到所述报文缓存管理指令的第一响应信息,以便所述中央处理器释放当前处理所述报文的线程;
获取模块,用于根据所述报文缓存管理指令,获取所述报文的报文指示信息;
申请模块,用于根据所述报文指示信息,向缓存管理器申请第一存储器中用于缓存所述报文的存储地址;
生成模块,用于当申请模块申请成功后,生成数据搬移指令;
所述发送模块,还用于将所述数据搬移指令发送至缓存控制器,以便所述缓存控制器从第二存储器中,将与所述数据搬移指令对应的数据搬移至所述存储地址的对应位置处,其中,所述第二存储器中存储有所述中央处理器处理后的报文,与所述数据搬移指令对应的数据为所述报文包含的数据。
8.根据权利要求7所述的装置,其特征在于,所述报文指示信息包括与所述报文对应的任务描述符;所述申请模块,具体用于:
根据所述任务描述符,获取与所述报文对应的至少一个第一缓存描述符,其中所述第一缓存描述符用于指示所述报文在所述第二存储器中的存储地址;
根据每一个所述第一缓存描述符,向所述缓存管理器申请在第一存储器中与所述第一缓存描述符对应的第二缓存描述符,第二缓存描述符用于指示所述报文在所述第一存储器中的存储地址。
9.一种网络处理器,其特征在于,包括:中央处理器和缓存移动引擎,所述缓存移动引擎用于执行权利要求1-6任一所述的报文缓存管理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被缓存移动引擎执行时实现如权利要求1-6任一项所述的报文缓存管理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111448375.0A CN114157619A (zh) | 2021-11-30 | 2021-11-30 | 报文缓存管理方法、装置及网络处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111448375.0A CN114157619A (zh) | 2021-11-30 | 2021-11-30 | 报文缓存管理方法、装置及网络处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114157619A true CN114157619A (zh) | 2022-03-08 |
Family
ID=80455151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111448375.0A Pending CN114157619A (zh) | 2021-11-30 | 2021-11-30 | 报文缓存管理方法、装置及网络处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114157619A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024021801A1 (zh) * | 2022-07-26 | 2024-02-01 | 华为技术有限公司 | 报文转发装置及方法、通信芯片及网络设备 |
-
2021
- 2021-11-30 CN CN202111448375.0A patent/CN114157619A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024021801A1 (zh) * | 2022-07-26 | 2024-02-01 | 华为技术有限公司 | 报文转发装置及方法、通信芯片及网络设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4908017B2 (ja) | Dmaデータ転送装置及びdmaデータ転送方法 | |
EP0617361B1 (en) | Scheduling method and apparatus for a communication network | |
US8239588B2 (en) | System and method for improved I/O node control in computer system | |
TWI231125B (en) | Transmitting multicast data packets | |
JPH04195577A (ja) | マルチプロセッサにおけるタスクスケジューリング方式 | |
JP2007079789A (ja) | 計算機システム及びイベント処理方法 | |
JPH0760415B2 (ja) | マルチタスキング・データ処理システム | |
US20040047361A1 (en) | Method and system for TCP/IP using generic buffers for non-posting TCP applications | |
JP5040050B2 (ja) | 複数チャネルdmaコントローラおよびプロセッサシステム | |
CN115167996A (zh) | 调度方法及装置、芯片、电子设备及存储介质 | |
US10929332B2 (en) | USB transmission device and transmission method | |
CN114157619A (zh) | 报文缓存管理方法、装置及网络处理器 | |
US20080225858A1 (en) | Data transferring apparatus and information processing system | |
CN110445580B (zh) | 数据发送方法及装置、存储介质、电子装置 | |
CN111158875B (zh) | 基于多模块的多任务处理方法、装置及系统 | |
JP2007328413A (ja) | 負荷分散方法 | |
US20230393782A1 (en) | Io request pipeline processing device, method and system, and storage medium | |
CN113157611B (zh) | 一种数据传输控制方法、装置、设备及可读存储介质 | |
CN114401072A (zh) | 一种基于hinoc协议的拆帧重排序队列的动态缓存控制方法及系统 | |
CN110908790B (zh) | 存储器存储装置及其操作方法 | |
US11386007B1 (en) | Methods and systems for fast allocation of fragmented caches | |
WO2012107988A1 (ja) | メモリ管理プログラム、メモリ管理方法及び情報処理装置 | |
CN117312202B (zh) | 片上系统和用于片上系统的数据传输方法 | |
WO2024001411A1 (zh) | 多线程调度方法及装置 | |
CN111858002B (zh) | 一种基于异步io的并发处理方法、系统及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |