首页 / 专利库 / 电信 / 数据通信总线 / 串行总线 / 通用串行总线 / 基于MIPS多核处理器的内存缓冲区回收方法

基于MIPS多核处理器的内存缓冲区回收方法

阅读:1019发布:2020-05-28

专利汇可以提供基于MIPS多核处理器的内存缓冲区回收方法专利检索,专利查询,专利分析的服务。并且本 申请 提供了一种基于MIPS 多核处理器 的内存缓冲区回收方法,该方法包括:当网络设备上的任一外设模 块 接收到数据包时,将该数据包存储在该外设模块对应的实际数据包缓冲区内存中,并记录存储数据包的数据包地址;第一CPU核查询外设模块的状态,当确定任一外设模块接收到数据包,且由本CPU核处理时,根据该外设模块存储数据包的数据包地址读取对应的数据包进行处理,并控制该外设模块之外的外设模块发送处理后的数据包;当完成数据包发送后,获取所述数据包地址对应的数据包缓冲归属区内存中的外设模块标识,并调用该标识对应的内存缓冲区回收函数,进行内存缓冲区数据的回收。该方法能够提高缓冲区数据回收的效率。,下面是基于MIPS多核处理器的内存缓冲区回收方法专利的具体信息内容。

1.一种基于单字长定点指令平均执行速度MIPS多核处理器的内存缓冲区回收方法,其特征在于,该方法包括:
网络设备在对外设模初始化时,为每个外设模块申请的单个数据包对应缓冲区内存包括:数据包缓冲归属区内存和实际数据包缓冲区内存;并在数据包缓冲归属区内存中储存对应外设模块的标识;其中,数据包缓存归属区的首地址为对应外设模块的单个数据包缓存区的首地址;
当网络设备上的任一外设模块接收到数据包时,将该数据包存储在该外设模块对应的实际数据包缓冲区内存中,并记录存储数据包的数据包地址;其中,数据包地址为该外设模块对应的缓冲区首地址向后偏移数据包缓冲归属区对应的N个字节的地址;
第一中央处理器CPU核查询外设模块的状态,当确定任一外设模块接收到数据包,且由本CPU核处理时,根据该外设模块存储数据包的数据包地址读取对应的数据包进行处理,并控制该外设模块之外的外设模块发送处理后的数据包;
第一CPU核获取所述数据包地址对应的数据包缓冲归属区内存中的外设模块标识,并调用该标识对应的内存缓冲区回收函数,进行内存缓冲区数据的回收。
2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
第一CPU核当确定任一外设模块接收到数据包,且由第二CPU核处理时,将该数据包的地址携带在核间消息中发送给第二CPU核;
第二CPU核根据第一CPU核发送的数据包地址读取对应的数据包进行处理,并控制该外设模块之外的外设模块发送处理后的数据包;
第二CPU核获取所述数据包地址对应的数据包缓冲归属区内存中的外设模块标识,并调用该标识对应的内存缓冲区回收函数,进行内存缓冲区数据的回收。
3.根据权利要求1或2所述的方法,其特征在于,
所述核间消息还携带目标设备标识,数据包大小。
4.根据权利要求1或2所述的方法,其特征在于,
所述外设模块为网口模块、高速串行总线SRIO接口模块,或通用串行总线USB接口模块。
5.根据权利要求1或2所述的方法,其特征在于,
针对每个外设接口申请的数据包缓冲归属区内存对应的字节数相同。

说明书全文

基于MIPS多核处理器的内存缓冲区回收方法

技术领域

[0001] 本发明涉及通信技术领域,特别涉及一种基于单字长定点指令平均执行速度(Million Instructions Per Second,MIPS)多核处理器的内存缓冲区回收方法。

背景技术

[0002] 当前时代信息技术高速发展,网络通信深入人们生活,接入网用户持续增加,新业务不断涌现,这就要求各网络运营商增加流量带宽,满足用户的新增需求,巩固和提升其竞争。在这样的背景下,网络设备大多采用了强大的多核中央处理器(CPU)来提高产品性能,如何进行核间及外设间高效、可靠地通信成为多核CPU设备亟需解决的问题。
[0003] 现在主流的MIPS多核处理器的核间通信、CPU核同外设通信采用FMN消息方式,由于软件层次划分不同,接收到的网络数据包会在不同的CPU核中进行处理,数据包在核间进行地址和长度等信息的传递,不进行复制和转发,这样就实现了数据的零拷贝,大大节省了CPU时间,提高了效率。
[0004] 数据零拷贝引入了释放内存缓冲区问题,这些内存缓冲区源自不同的外设,不同外设的BD定义格式存在差异,因此内存缓冲区的回收实现也存在差异,在实际应用中需要判断即将释放的内存缓冲区的归属,之后调用相应的释放函数进行内存缓冲区的释放。如何确定内存缓冲区的归属显得尤为重要。
[0005] 参见图1,图1为现有实现中BD结构示意图。在外设接口初始化时,为每个外设接口申请对应的内存缓存区,内存缓冲区首地址与外设BD指示的缓冲区首地址存在映射关系。
[0006] 数据包处理结束后需要释放其占用的内存缓冲区,不同外设构造的BD结构不同,缓冲区回收方法也不同,按现有方法采用BD指示的内存缓冲区地址匹配方法确定缓冲区归属进行回收的方法效率低,查找时间与外设种类、BD大小成正比,外设种类越多,BD数量越大,占用的CPU时间就越多,严重降低CPU工作效率。

发明内容

[0007] 有鉴于此,本申请提供一种基于MIPS多核处理器的内存缓冲区回收方法,能够提高缓冲区数据回收的效率。
[0008] 为解决上述技术问题,本申请的技术方案是这样实现的:
[0009] 一种基于MIPS多核处理器的内存缓冲区回收方法,该方法包括:
[0010] 网络设备在对外设模初始化时,为每个外设模块申请的单个数据包对应缓冲区内存包括:数据包缓冲归属区内存和实际数据包缓冲区内存;并在数据包缓冲归属区内存中储存对应外设模块的标识;其中,数据包缓存归属区的首地址为对应外设模块的单个数据包缓存区的首地址;
[0011] 当网络设备上的任一外设模块接收到数据包时,将该数据包存储在该外设模块对应的实际数据包缓冲区内存中,并记录存储数据包的数据包地址;其中,数据包地址为该外设模块对应的缓冲区首地址向后偏移数据包缓冲归属区对应的N个字节的地址;
[0012] 第一中央处理器CPU核查询外设模块的状态,当确定任一外设模块接收到数据包,且由本CPU核处理时,根据该外设模块存储数据包的数据包地址读取对应的数据包进行处理,并控制该外设模块之外的外设模块发送处理后的数据包;
[0013] 第一CPU核获取所述数据包地址对应的数据包缓冲归属区内存中的外设模块标识,并调用该标识对应的内存缓冲区回收函数,进行内存缓冲区数据的回收。
[0014] 其中,所述方法进一步包括:
[0015] 第一CPU核当确定任一外设模块接收到数据包,且由第二CPU核处理时,将该数据包的地址携带在核间消息中发送给第二CPU核;
[0016] 第二CPU核根据第一CPU核发送的数据包地址读取对应的数据包进行处理,并控制该外设模块之外的外设模块发送处理后的数据包;
[0017] 第二CPU核获取所述数据包地址对应的数据包缓冲归属区内存中的外设模块标识,并调用该标识对应的内存缓冲区回收函数,进行内存缓冲区数据的回收。
[0018] 其中,
[0019] 所述核间消息还携带目标设备标识,数据包大小。
[0020] 其中,
[0021] 所述外设模块为网口模块、高速串行总线SRIO接口模块,或通用串行总线USB接口模块。
[0022] 其中,
[0023] 针对每个外设接口申请的数据包缓冲归属区内存对应的字节数相同。
[0024] 由上面的技术方案可知,本申请中通过在初始化外设模块申请缓冲区内存时,多申请一个数据包缓冲归属区内存,用于存储对应外设模块的标识,以便在处理并发送该外设模块接收到的数据包后,根据数据包地址的偏移量能够直接获取存储在数据包缓冲归属区内存中的外设模块的标识,进而确定对应的内存缓冲区回收函数,进行数据回收。该方案能够提高缓冲区数据回收的效率。附图说明
[0025] 图1为现有实现中BD结构示意图;
[0026] 图2为本申请实施例中申请的缓存区内存示意图;
[0027] 图3为本申请实施例一中基于MIPS多核处理器的内存缓冲区回收流程示意图;
[0028] 图4为本申请实施例二中基于MIPS多核处理器的内存缓冲区回收流程示意图;
[0029] 图5为本申请实施例中核间消息的结构示意图。

具体实施方式

[0030] 为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。
[0031] 本申请提供一种基于MIPS多核处理器的内存缓冲区回收方法,通过在初始化外设模块申请缓冲区内存时,多申请一个数据包缓冲归属区内存,用于存储对应外设模块的标识,以便在处理并发送该外设模块接收到的数据包后,根据数据包地址的偏移量能够直接获取存储在数据包缓冲归属区内存中的外设模块的标识,进而确定对应的内存缓冲区回收函数,进行数据回收。该方案能够提高缓冲区数据回收的效率。
[0032] 本申请具体实施例中,网络设备在对外设模块初始化时,为每个外设模块申请的单个数据包对应缓冲区内存包括:数据包缓冲归属区内存和实际数据包缓冲区内存;并在数据包缓冲归属区内存中储存对应外设模块的标识;其中,数据包缓存归属区的首地址为对应外设模块的单个数据包缓存区的首地址。
[0033] 本申请实施例中的外设模块可以为网口模块、高速串行总线(SRIO)接口模块、通用串行总线(Universal Serial Bus,USB)接口模块等。
[0034] 针对各模块为具备接口以及控制接口数据存储的功能的模块。
[0035] 如网络模块,具备网口功能,以及在该网口接收到数据包时,将数据包存储到对应申请的缓冲区内存中,并显示外设模块状态,以便CPU轮询到外设模块状态的变化。
[0036] 参见图2,图2为本申请实施例中申请的缓存区内存示意图。图2中Buffer 0到Buffer M同现有实现,是为每个外设模块申请的单个实际数据包缓冲区内存,每个实际数据包缓冲区内存前的N比特所对应的数据包缓冲归属区内存是本申请新增加的,用于存储对应外设模块的标识,以便获知对应的数据包地址时,就能够获知对应的外设模块的标识。
[0037] 为每个外设模块申请的单个实际数据包缓冲区内存的大小可以相同,也可以不同,具体大小根据实际需要确定,本申请不做限制,图2所示的存储空间只是一种示例,实际应用中不做限制。
[0038] 针对每个外设接口申请的单个数据包缓冲归属区内存对应的字节数相同,即都为N比特对应的内存。
[0039] 针对数据包缓冲归属区内存的大小,即所对字节数可以根据实际需要配置,N的大小可以整个设备的外设模块的多少进行预先规划配置。
[0040] 下面结合附图,详细说明基于MIPS多核处理器的内存缓冲区回收的过程。
[0041] 实施例一
[0042] 参见图3,图3为本申请实施例一中基于MIPS多核处理器的内存缓冲区回收流程示意图。具体步骤为:
[0043] 步骤301,当网络设备上的任一外设模块接收到数据包时,将该数据包存储在该外设模块对应的实际数据包缓冲区内存中,并记录存储数据包的数据包地址。
[0044] 其中,数据包地址为该外设模块对应的缓冲区首地址向后偏移数据包缓冲归属区对应的N个字节的地址。
[0045] 步骤302,网络设备的第一CPU核查询外设模块的状态,当确定任一外设模块接收到数据包,且由本CPU核处理时,根据该外设模块存储数据包的数据包地址读取对应的数据包进行处理,并控制该外设模块之外的外设模块发送处理后的数据包。
[0046] 第一CPU核负责一类外设模块的状态的查询,如SIRO接口对应的外设模块,或者网口对应的外设模块,再或者USB接口对应的模块,具体实现时,可以以轮询方式查询各外设模块的状态。
[0047] 本申请具体实施例中实现外设模块的状态的查询,确定外设模块是否接收到数据包,以及确定由哪个CPU核处理的过程均同现有实现,这里不再详细描述。
[0048] 本实施例中当确定由本CPU核处理时,处理数据包,以及控制对应外设模块发送处理后的数据包均同现有实现。
[0049] 本申请实施例中针对的应用场景为由外设模块A接收数据包,再由外设模块B发送处理后的数据包,其它应用场景同现有实现,本申请不做任何改变。
[0050] 步骤303,网络设备的第一CPU核获取所述数据包地址对应的数据包缓冲归属区内存中的外设模块标识,并调用该标识对应的内存缓冲区回收函数,进行内存缓冲区数据的回收。
[0051] 本申请具体实现内存缓冲区回收时,不使用数据包的地址与预先配置的映射关系进行匹配确定内存缓冲区,而是在确定了数据包地址后,偏移N个字节就可确定数据包缓冲归属区内存,从中直接获取外设模块标识。
[0052] 在确定对应的外设模块后,即可确定外设的种类,根据预先配置的外设模块的标识和内存缓冲区回收函数的映射关系确定对应的回收函数。
[0053] 调用该标识对应的内存缓冲区回收函数,进行内存缓冲区数据的回收的具体实现同现有实现。
[0054] 实施例二
[0055] 参见图4,图4为本申请实施例二中基于MIPS多核处理器的内存缓冲区回收流程示意图。具体步骤为:
[0056] 步骤401,当网络设备上的任一外设模块接收到数据包时,将该数据包存储在该外设模块对应的实际数据包缓冲区内存中,并记录存储数据包的数据包地址。
[0057] 其中,数据包地址为该外设模块对应的缓冲区首地址向后偏移数据包缓冲归属区对应的N个字节的地址。
[0058] 步骤402,网络设备的第一CPU核查询外设模块的状态,当确定任一外设模块接收到数据包,且由第二CPU核处理时,将该数据包的地址携带在核间消息中发送给第二CPU核。
[0059] 本申请具体实施例中实现外设模块的状态的查询,确定外设模块是否接收到数据包,以及确定由哪个CPU核处理的过程均同现有实现,这里不再详细描述。
[0060] 本申请具体实现中第一CPU核向第二CPU核发送核间消息时,核间消息除包括数据包地址之外,还携带目标设备标识,数据包大小。
[0061] 参见图5,图5为本申请实施例中核间消息的结构示意图。
[0062] 图5中Data字段用于携带数据包地址,UcId字段用于存储目标设备标识,Size字段用于携带存储的数据包的大小,UcCode字段为用户自定义消息码,该字段的内容可以根据实际需要携带内容,也可以不携带相关内容,图5中所有字段的总长度固定为32Byte即可,符合核间消息的标准,该核间消息的长度远远小于数据包大小。
[0063] 在具体实现时,当由其他核来处理数据包时,目标设备标识为CPU核的标识,当由其他设备处理对应数据包时,目标设备标识为其他设备的标识,本申请实施例中以CPU核处理为例。
[0064] 这样在CPU核之间仅传递数据包地址,不传递具体数据包,实现了数据包的零拷贝,大大节省了CPU处理时间,提高整个系统的效率。
[0065] 步骤403,网络设备的第二CPU核根据第一CPU核发送的数据包地址读取对应的数据包进行处理,并控制该外设模块之外的外设模块发送处理后的数据包。
[0066] 步骤404,网络设备的第二CPU核获取所述数据包地址对应的数据包缓冲归属区内存中的外设模块标识,并调用该标识对应的内存缓冲区回收函数,进行内存缓冲区数据的回收。
[0067] 本申请具体实现内存缓冲区回收时,不使用数据包的地址与预先配置的映射关系进行匹配确定内存缓冲区,而是在确定了数据包地址后,偏移N个字节就可确定数据包缓冲归属区内存,从中直接获取外设模块标识。
[0068] 在确定对应的外设模块后,即可确定外设的种类,根据预先配置的外设模块的标识和内存缓冲区回收函数的映射关系确定对应的回收函数。
[0069] 调用该标识对应的内存缓冲区回收函数,进行内存缓冲区数据的回收的具体实现同现有实现。
[0070] 本实施例通过标记内存缓冲区归属,达到内存缓冲区的高效回收。
[0071] 数据包存放在指定内存缓冲区位置,CPU核间通信采用消息传递方式,依赖于MIPS多核处理器特性,消息格式固定,数据包地址使用Data字段存储。
[0072] 通过申请数据包缓存地址和存储数据包缓存地址偏移若干个字节如2所示,利用这偏移的字节标记数据包缓冲区的归属,在数据包发送完成后,根据归属标记内容,调用相应的释放缓冲区函数释放缓冲区,这样处理极大简化了缓冲区回收流程,增加了回收外部设备缓冲区灵活性,进而提高了通信效率、增强了系统的可靠性。
[0073] 综上所述,本申请通过一种高效内存缓冲区回收的方法,通过标记内存缓冲区归属,根据归属调用相应的缓冲区回收函数;依赖硬件多核CPU特性,核间通信采用消息传递,传送数据包首地址而不是整个数据包,实现数据零拷贝。
[0074] 通过在初始化外设模块申请缓冲区内存时,多申请一个数据包缓冲归属区内存,用于存储对应外设模块的标识,以便在处理并发送该外设模块接收到的数据包后,根据数据包地址的偏移量能够直接获取存储在数据包缓冲归属区内存中的外设模块的标识,进而确定对应的内存缓冲区回收函数,进行数据回收。该方案能够提高缓冲区数据回收的效率。
[0075] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈