一种多核系统的资源管理方法和控制核的制作方法

文档序号:6610261阅读:201来源:国知局
专利名称:一种多核系统的资源管理方法和控制核的制作方法
技术领域
本发明涉及资源分配技术,特别涉及一种多核系统的资源管理方法和控 制核。
背景技术
多核中央处理单元(CPU)可看作将多个通用的中央处理单元(CPU)
以及一些功能部件集成到一块芯片中形成的一个系统级芯片(soc),本文
中,将多核CPU中的通用CPU称为核(core )。将应用多核CPU的系统称 为多核系统。在多核系统中,各个核之间可以并发访问临界资源(又称共享 资源),这些共享资源的分配和访问需要一定的机制进行控制和管理,以保 证系统的正常运行。
多核系统的一个典型应用是在路由器产品中,管理大量的路由等转发表 项信息,完成报文的路由和转发。在应用多核系统的路由器产品中,分配的 共享资源用于建立转发表项。具体地,当需要建立转发表项时,分配一定的 共享资源(即共享的一块内存空间),利用该资源建立转发表项;当需要删 除转发表项时,释放承载该转发表项的共享资源。
一般在路由器产品中,存在一个控制core负责转发表项维护操作(包 括增加和删除转发表项等),其他的core处理转发业务会频繁的访问控制 core维护的转发表项,称为控制core。为了实现高速的转发处理,要求在数 据转发过程中能够快速的命中表项,也就是查找到指定资源,达到高速的数 据转发能力;并且,在大容量路由处理环境下能够快速完成建立表项,也就 是完成资源分配;同时,由于存在多核对转发表项的访问,所以需要解决访 问冲突的问题,也就是并发访问共享资源的冲突问题。
在资源管理过程中,如果不存在资源释放操作,那么采用顺序分配的资 源分配方式,即可以保证资源分配的连续性。但事实上,很多情况下会出现 资源释放操作,例如网络路由状况发生改变需要删除某个转发表项,这时, 释放的资源成为可分配的资源,那么已分配的资源就不再是连续的,而出现
了某些可分配的空洞。如果仍然采用顺序分配方案,则这些被释^:的资源就 无法被重新利用。
目前,在多核系统中,可以采用HASH索引表+资源池的方案进行资源 的管理,以实现上述快速分配资源、查找指定资源和解决并发访问冲突的问 题,同时能够尽可能利用所有可分配资源。其中,资源池即为所有可分配的 共享资源区域(即共享的内存空间)。
具体地,图1为路由器产品中应用HASH索引表+资源池方案的示意图, 其资源分配方法具体包括遍历资源池中的资源,以获取空闲资源,并为该 资源设置有效标志;然后,将该设置有效标志后的资源和HASH索引表做关 联,在HASH索引表中相应key值(如图1中所示的"1"和"3")的位置 上写入该资源的地址信息。上述分配的资源可以上报给上层单元,用于写入 要创建的转发表项。
当需要将建立好的转发表项删除时,具体可以为获取将要删除资源的 地址信息,为该资源设置无效标志,并将该资源与HASH索引表去掉关联, 也就是将HASH索引表中相应key值的位置置空。
因为采用资源池的方式,所以表项操作的性能都可以得到保证,同时采 用HASH索引表表项查询的效率也能够满足要求。对于访问冲突问题,可以 通过延迟删除的方式解决。使用延迟删除方式时,所有的Core/Thread共享 唯一的表项,创建新的转发表项时,先创建新的表项将老的表项替换掉,保 证后续的查找使用新的表项;老的表项挂在回收链上延时一段时间再删除, 保证更新操作时正在访问该表项的Core/Thread不会访问非法地址。
但是,采用上述HASH索引表+资源池的方案也存在以下缺点
1、由于资源分配的非连续性,导致在进行资源分配时,需要遍历资源池
以找到空闲资源,极大地影响了资源分配效率;
2、 在需要对转发表进行遍历操作(例如,要显示所有有效表项时)或要 删除整个转发表时,需要遍历整个资源池以找到其中的有效或满足条件的表项; 实际上有效或满足条件的表项在整个转发表中所占的比例较小,但需遍历整个 转发表,增加了许多无用的查找操作,极大的影响了转发效率。
3、 需要删除特定转发表项时,为避免有正在访问该表项的报文访问已经 释放的内存空间,引入的延迟删除机制增加了算法的复杂度。在大量路由频繁 振荡情况下,延迟删除链会很长,有可能造成内存耗尽,进而无法分配新的可 用资源以建立新的转发表项。
4、 由于在资源分配时返回首个匹配条件的空闲资源,因此,在表项反复 增删的条件下,刚释放的资源可能又被作为新分配的资源使用。这种方式不利 于程序稳定,例如反复增删过程丟失一个删除消息,有可能使得后续增加消息 使用错误的资源。

发明内容
有鉴于此,本发明提供一种多核系统的资源管理方法和系统,能够提高 资源分配效率。
为实现上述目的,本发明采用如下的技术方案
一种多核系统的资源管理方法,预先建立资源管理表,该资源管理表包 括若干表项,每个表项标有自己的序号,所述资源管理表的各个表项用于保 存资源池中各可分配资源的地址信息;为资源管理表设置空闲索引,该空闲 索引索引到资源管理表的表项,该表项将资源管理表分成两部分,其中一部 分为存储所有已分配资源的地址信息的表项, 一部分为存储未分配资源的地 址信息的表项;在进行资源释放时,确定要释放资源地址信息对应的资源管 理表项的序号和最近一次分配资源地址信息所对应的资源管理表项的序号, 交换所述的两个序号表项中保存的地址信息;重置空闲索引,使其索引到资 源管理表的另一个表项,该表项将资源管理表分成两部分,其中一部分为存 储所有已分配资源的地址信息的表项, 一部分为存储未分配资源的地址信息 的表项。
较佳地,该方法进一步包括为资源管理表设置分配索引,所述分配索 引索引到任意一个可分配资源的地址信息对应的资源管理表项;
所述空闲索引索引到资源管理表的表项为所述空闲索引索引到与存储 已分配资源的地址信息表项相邻的存储未分配资源的地址信息的表项;
资源分配的方式为确定所述分配索引对应的地址信息,将该地址信息 上的资源作为本次分配的资源上报;交换资源管理表中所述空闲索引对应的 未分配资源的地址信息与分配索引对应的地址信息;重置空闲索引为当前空 闲索引的下一个序号,重置分配索引为剩余的一个可分配资源的地址信息对 应的资源管理表项的序号。
较佳地,所述设置空闲索引为将所述空闲索引初始化为所有序号中的 最小值;
所述设置分配索引为将所述分配索引初始化为所有序号中的最大值; 所述重置分配索引为剩余的一个可分配资源的地址信息对应资源管理 表项的序号为将当前分配索引减l;并判断减1后的分配索引是否小于等 于所述重置后的空闲索引,若是,则设置分配索引为所有序号中的最大值, 否则,设置分配索引为所述减l后的分配索引;或者,保持当前分配索引不 变;或者,设置分配索引为大于当前空闲索引的任意一个序号。
较佳地,所述设置空闲索引为将空闲索引初始化为所有序号中的最大
值;
所述设置分配索引为将分配索引初始化为所有序号中的最小值; 所述重置分配索引为可分配资源地址信息对应的任意一个序号为将当 前分配索引加1;并判断加1后的分配索引是否大于等于所述重置后的空闲 索引,若是,则设置分配索引为所有序号中的最小值,否则,设置分配索引 为加l后的分配索引;或者,保持当前分配索引不变;或者,设置分配索引 为小于当前空闲索引的任意一个序号。
较佳地,该方法进一步包括为资源管理表设置分配索引,所述分配索 引索引到任意一个可分配资源的地址信息对应资源管理表项的序号;
所述空闲索引索引到资源管理表的表项为所述空闲索引索引到存储最 近一 次分配资源的地址信息的表项;
资源分配的方式为确定所述分配索引对应的地址信息,将该地址信息 上的资源作为本次分配的资源上报;重置空闲索引为当前空闲索引的下一个 序号,交换资源管理表中所述重置后的空闲索引对应的未分配资源的地址信 息与分配索引对应的地址信息;重置分配索引为剩余的一个可分配资源的地 址信息对应的序号。
较佳地,所述设置空闲索引为将所述空闲索引初始化为所有序号中的 最小值;
所述设置分配索引为将所述分配索引初始化为所有序号中的最大值; 所述重置分配索引为剩余的任意一个可分配资源的地址信息对应的序 号为将当前分配索引减l;并判断减1后的分配索引是否小于等于所述重 置后空闲索引加l的值,若是,则设置分配索引为所有序号中的最大值,否 则,设置分配索引为所述减1后的分配索引;或者,保持当前分配索引不变; 或者,设置分配索引为大于当前空闲索引加1后的任意一个序号。
较佳地,所述设置空闲索引为将空闲索引初始化为所有序号中的最大
值;
所述设置分配索引为将分配索引初始化为所有序号中的最小值; 所述重置分配索引为可分配资源地址信息对应的任意一个序号为将当 前分配索引加1;并判断加1后的分配索引是否大于等于所述重置后空闲索 引减l的值,若是,则设置分配索引为所有序号中的最小值,否则,设置分 配索引为加l后的分配索引;或者,保持当前分配索引不变;或者,设置分 配索引为小于当前空闲索引减1后的任意一个序号。
较佳地,当所述空闲索引索引到与存储已分配资源的地址信息表项相邻 的存储未分配资源的地址信息的表项时,资源分配的方式为确定所述空闲
索引对应的地址信息,将该地址信息上的资源作为本次分配的资源上报;重 置空闲索引为当前空闲索引的下一个序号;
当所述空闲索引索引到存储最近一次分配资源的地址信息的表项时,资 源分配的方式为重置空闲索引为当前空闲索引的下一个序号;确定所述重 置后空闲索引对应的地址信息,将该地址信息上的资源作为本次分配的资源 上报。
较佳地,该方法进一步包括预先为资源池中的资源设置资源标识ID, 所述资源ID的取值与资源地址信息对应的资源管理表项的序号相等;
在进行资源分配并上报分配资源后,将上报的资源与HASH索引表进 行关联,并在上报的资源上写入转发表项的内容;
在所述交换地址信息后,进一步包括确定交换的两个地址信息上的两 个资源,并交换确定的两个资源的资源ID;
当接收到需转发的报文时,根据报文内容提取关键信息计算HASH值, 根据HASH值获取对应的资源和该资源的资源ID;利用所述资源ID判断该 资源上写入的转发表项是否有效,若是,则根据该资源上的转发表项转发接 收的报文;否则,返回查找转发表失败。
较佳地,所述利用资源ID判断资源上写入的转发表项是否有效为
当所述空闲索引被初始化为所有序号中的最小值、且所述空闲索引索引 到与存储已分配资源的地址信息表项相邻的存储未分配资源的地址信息的 表项时,判断所述资源ID是否小于当前空闲索引,若是,则判定该资源上 写入的转发表项有效,否则,判定该资源上写入的转发表项无效;
当所述空闲索引被初始化为所有序号中的最小值、且所述空闲索引索引 到存储最近一次分配资源的地址信息的表项时,判断所述资源ID是否小于 等于当前空闲索引,若是,则判定该资源上写入的转发表项有效,否则,判 定该资源上写入的转发表项无效;
当所述空闲索引被初始化为所有序号中的最大值、且所述空闲索引索引 到与存储已分配资源的地址信息表项相邻的存储未分配资源的地址信息的
表项时,判定所述资源ID是否大于当前空闲索引,若是,则判定该资源上 写入的转发表项有效,否则,判定该资源上写入的转发表项无效;
当所述空闲索引被初始化为所有序号中的最大值、且所述空闲索引索引 到存储最近一次分配资源的地址信息的表项时,判断所述资源ID是否大于 等于当前空闲索引,若是,则判定该资源上写入的转发表项有效,否则,判 定该资源上写入的转发表项无效。
较佳地,该方法进一步包括在释放所有已分配的资源时,设置所述空 闲索引为初始化时的取值。
一种多核系统中的控制核,包括
配置单元,用于建立资源管理表,该资源管理表包括若干表项,每个表 项标有自己的序号,所述资源管理表用于保存资源池中各可分配资源的地址 信息;为资源管理表设置空闲索引,该空闲索引索引到资源管理表的表项, 该表项将资源管理表分成两部分,其中一部分为存储所有已分配资源的地址 信息的表项, 一部分为存储未分配资源的地址信息的表项;
资源管理单元,用于在进行资源释放时,确定要释放资源地址信息对应 的资源管理表的序号和最近一次分配资源地址信息对应的资源管理表的序 号,交换所述的两个序号表项中记录的资源地址信息;重置空闲索引,使其 索引到资源管理表的另一个表项,该表项将资源管理表分成两部分,其中一 部分为存储所有已分配资源的地址信息的表项, 一部分为存储未分配资源的 地址信息的表项。
较佳地,所述资源管理单元包括资源分配子单元和资源释放子单元; 所述配置单元,进一步用于将所述空闲索引初始化为所有序号中的最小
值或最大值,为资源管理表设置分配索引,并根据空闲索引的初始化值,将
分配索引对应初始化为所有序号中的最大值或最小值;
所述资源分配子单元,用于确定所述分配索引对应的地址信息,将该地
址信息上的资源作为本次分配的资源上报;交换所述空闲索引对应的地址信
息与分配索引对应的地址信息;重置空闲索引为当前空闲索引的下一个序
号,重置分配索引为当前分配索引的下一个序号;
所述资源释放子单元,用于在进行资源释放时,确定要释放资源地址信 息对应的资源管理表的序号和最近一次分配资源地址信息对应的资源管理 表的序号,交换所述的两个序号表项中记录的资源地址信息;重置空闲索引, 使其索引到资源管理表的另一个表项,该表项将资源管理表分成两部分,其 中一部分为存储所有已分配资源的地址信息的表项, 一部分为存储未分配资 源的地址信息的表项。
由上述技术方案可见,预先建立资源管理表,该资源管理表包括若干表 项,每个表项标有自己的序号,该资源管理表用于保存资源池中各可分配资 源的地址信息。这样,就为资源池中的各个资源地址信息与资源管理表中的 表项建立了对应关系。为资源管理表设置空闲索引,该空闲索引索引到资源 管理表的表项,该表项将资源管理表分成两部分,其中一部分为存储所有已 分配资源的地址信息的表项, 一部分为存储未分配资源的地址信息的表项。 从而保证任意资源的分配后,利用空闲索引能够区分已分配和未分配资源。 在进行资源释放时,确定要释放资源地址信息对应的资源管理表的序号和最 近一次分配资源地址信息所对应的资源管理表的序号,交换所述两个序号表 项中保存的资源地址地址信息;重置空闲索引,使其索引到资源管理表的另 一个表项,该表项将资源管理表分成两部分,其中一部分为存储所有已分配 资源的地址信息的表项, 一部分为存储未分配资源的地址信息的表项。从而 保证利用空闲索引能够区分已分配和未分配资源,并且本次释放资源地址信 息原本对应的资源管理表的序号对应上一次分配资源的地址信息,进而保证 任意资源释放后,所有对应于已分配资源地址信息的序号仍然是连续的。因 此,在资源分配过程中,可以根据空闲索引确定未分配资源对应的地址信息, 从而直接在未分配的资源中选择,不需要遍历整个资源池,提高了资源分配 效率。


图1为路由器产品中应用HASH索引表+资源池方案的示意图。
图2为本发明提供的多核系统中资源分配方法的总体流程图。
图3为本发明提供的多核系统中控制核的总体结构图。
图4为本发明实施例一中资源管理方法的具体流程图。
图5a为本发明实施例一中资源管理表和资源池初始化后的状态示意图。
图5b为本发明实施例一中经过一次资源分配后,资源管理表和资源池 当前状态示意图。
图5c为本发明实施例 一 中经过三次资源分配后,资源管理表和资源池 当前状态示意图。
图5d为本发明实施例一中释放资源前资源管理表和资源池当前状态示意图。
图5e为本发明实施例一中释放资源后资源管理表和资源池当前状态示 意图。
图6为本发明实施例二中多核系统中的控制核的具体结构图。
图7为本发明实施例二中资源管理方法的具体流程图。
图8a为本发明实施例二中资源管理表和资源池初始化后的状态示意图。
图8b为本发明实施例二中经过一次资源分配后,资源管理表和资源池 当前状态示意图。
图8c为本发明实施例二中经过三次资源分配后,资源管理表和资源池 当前状态示意图。
图8d为本发明实施例二中释放资源前资源管理表和资源池当前状态示 意图。
图8e为本发明实施例二中释放资源后资源管理表和资源池当前状态示
意图。
图9为本发明实施例三中进行报文转发的具体流程图。
具体实施例方式
为使本发明的目的、技术手段和优点更加清楚明白,以下结合附图对本 发明做进一步详细说明。
本发明的基本思想是将已分配资源和未分配资源进行分界,从而提高 资源分配效率。具体地,建立资源管理表,该资源管理表包括若干表项,每 个表项标有自己的序号,所述资源管理表用于保存资源池中各可分配资源的 地址信息及其对应的序号,并利用序号的有序性管理资源的地址信息,从而 进 一 步管理与地址信息直接关联的资源池中的资源。
图2为本发明提供的多核系统中资源分配方法的总体流程图。如图2所 示,该方法包法舌
步骤201,预先建立资源管理表,该资源管理表包括若干表项,每个表 项标有自己的序号,所述资源管理表用于保存资源池中各可分配资源的地址 信息。
本步骤中,资源管理表的各个表项保存各可分配资源的地址信息,同时 每个表项还标有自己的序号,因此资源池中各可分配资源的地址信息与资源 管理表的表项序号建立了对应关系,从而可以利用序号的有序性,使资源地 址信息能够按序排列。
步骤202,为资源管理表设置空闲索引,该空闲索引索引到资源管理表 的表项,该表项将资源管理表分成两部分,其中一部分为存储所有已分配资 源的地址信息的表项, 一部分为存储未分配资源的地址信息的表项。
在本文中,与传统意义上的索引不同,空闲索引是一个变量,其取值是 某资源地址信息所对应的序号。具体地,空闲索引索引到的表项将资源管理 表分成两部分, 一部分为存储所有已分配资源的地址信息的表项, 一部分为 存储未分配资源的地址信息的表项,从而使空闲索引成为资源管理表中已分
配资源地址信息和未分配资源地址信息保存位置的分界点,利用空闲索引可 以很容易区分已分配资源和未分配资源,并且资源管理表中所表征的资源分 配状况是连续的。其中,对于已分配资源的地址信息与未分配资源的地址信 息的分界表项有两种选择, 一个是分界处的存储已分配资源地址信息的表 项,另一个是分界处的存储未分配资源地址信息的表项,因此空闲索引的取 值也可以有上述两种选择。
步骤203,在进行资源释放时,确定要释放资源地址信息对应的资源管
理表序号和最近一次分配资源地址信息对应资源管理表项的序号,并交换确 定的两个序号表项中保存的地址信息。
本步骤中,在资源释放时,交换确定的两个序号表项中保存的地址信息, 也就等价于将两个地址信息对应的表项序号进行了交换,从而使这两个地址 信息的排列顺序进行了交换。原本与本次释放资源的地址信息对应的序号对 应最近一次分配资源的地址信息,从而保证在资源释放后,所有已分配资源 地址信息对应的序号仍然是连续的。
步骤204,重置空闲索引,使其索引到资源管理表的另一个表项,该表 项将资源管理表分成两部分,其中 一部分为存储所有已分配资源的地址信息 的表项, 一部分为存储未分配资源的地址信息的表项。
在步骤203前,保存最近一次分配资源的地址信息的表项是已分配资源 和未分配资源的分界表项,经过步骤203中地址信息的交换后,保存本次释 放资源的地址信息的表项成为已分配资源和未分配资源的分界表项,并且本 次释放资源已成为未分配资源,也就是资源管理表中保存已分配资源和未分 配资源的地址信息的表项分界需要进行变化。而该变化可以通过重置空闲索 引实现。具体地,将空闲索引重新索引到释放本次释放资源后已分配资源和 未分配资源地址信息的分界表项。并且,通过重置空闲索引,能够使本次释 放资源的地址信息位于未分配资源的表项部分,成为可分配的资源,同时又 没有真正释放该资源,达到了延迟删除的目的。
至此,本发明提供的多核系统中的资源分配流程完成。其中,步骤201 ~
17202表示资源管理的设置过程,步骤203 ~ 205是资源分配和释放的过程。
图3为本发明提供的多核系统中控制核的总体结构图。如图3所示,该 控制核包括配置单元和资源管理单元,利用该控制核实现对多核系统中资 源的管理和分配。
在该控制核中,配置单元,建立资源管理表该资源管理表包括若干表项, 每个表项标有自己的序号,所述资源管理表用于保存资源池中各可分配资源 的地址信息;为资源管理表设置空闲索引,该空闲索引索引到资源管理表的 表项,该表项将资源管理表分成两部分,其中一部分为存储所有已分配资源 的地址信息的表项, 一部分为存储未分配资源的地址信息的表项。资源管理 单元,用于在进行资源释放时,确定要释放资源地址信息对应的资源管理表 的序号和最近一次分配资源地址信息对应的资源管理表的序号,交换所述的 两个序号表项中记录的资源地址信息;重置空闲索引,使其索引到资源管理 表的另一个表项,该表项将资源管理表分成两部分,其中一部分为存储所有 已分配资源的地址信息的表项, 一部分为存储未分配资源的地址信息的表 项。
上述即为对本发明提供的多核系统中资源分配方法和控制核的总体概述。
通过上述分配方式,通过空闲索引能够在资源管理表中对已分配资源和 未分配资源进行分界。在进行资源释放时,将本次释放资源的地址信息所对 应的序号与上次分配资源的地址信息所对应的序号交换,从而在资源释放 后,仍然能够保证已分配资源的地址信息所对应的序号均是连续的,并且已 分配资源与未分配资源的地址信息对应的序号通过空闲索引分界,从而可以 根据空闲索引确定未分配资源对应的地址信息,进而直接在未分配的资源中 选择,不需要遍历整个资源池,提高了资源分配效率。
下面通过较佳实施例说明本发明中资源分配方法的具体实施方式
。在本 实施例中,以在路由器产品中应用多核系统进行资源分配为例进行说明,分 配的资源用于写入报文转发表项,以实现报文转发。
实施例一
在本实施例中,资源分配时采用按序号顺序分配的方式,从而能够方便 地实现在资源分配过程中,已分配资源的地址信息所对应的序号是连续的。
图4为本发明实施例一中资源管理方法的具体流程图。如图4所示,该 方法包括
步骤401,预先创建并初始化资源管理表,保存资源池中各可分配资源 的地址信息,设置空闲索引以及资源ID。
本实施例中,资源管理表利用 一个指针数组ppStPoolCtrl[]的形式实现, 用于保存资源池中各可分配资源的地址信息。具体地,指针数组中的每个元 素,指向资源池中的一个资源,称为该资源的资源管理指针,也就是保存该 资源的地址信息;指针数组中各元素的元素号就是资源管理表中各个表项的 序号。
为资源管理表i殳置空闲索引(ulldlelndex)。如前所述,本文中空闲索 引为变量,取值为,保存资源地址信息表项的序号。本步骤对空闲索引进行 初始化,将空闲索引初始化为所有序号中的最小值或最大值。具体在本实施 例中,由于指针数组的元素号即为序号,并且以将空闲索引初始化为指针数 组的首元素号为例进行下面的说明。
另外,为保证资源分配过程中,能够通过资源池中的资源确定资源的已 分配和未分配状态,优选地,为资源池中的各个资源设置资源ID(ulResid) 属性,该资源ID的取值与保存资源的地址信息的表项序号相等,也就是资 源管理指针在指针数组中的元素号。这里,资源ID与前迷序号的差别在于, 资源ID是在资源池中为各个资源保存的与资源对应的属性值,序号是在资 源管理表中保存的与资源地址信息对应的值,二者从不同的逻辑结构中体现 对应资源的分配状态。具体地,从资源池的角度,可以利用某资源的资源ID 与空闲索引的大小关系确定该资源是否已分配;从资源管理表的角度,可以 利用某资源地址信息对应的序号与空闲索引的大小关系确定该资源是否已 分配,详细的大小比较过程和结果判定将在后续的描述中介绍。
至此,资源管理表和资源池的初始化完成,建立了如图5a所示的指针 数组的每个元素与资源池中的资源对应关系。本步骤中的设置操作由多核系 统控制核中的配置单元完成。
在上述初始化完成后,即可以利用资源管理表+资源池的方案进行资源 分配,具体一次资源分配过程包括以下步骤
在本实施例中,资源分配是从资源管理表中左边元素所指向的资源开始 的,并且按照资源地址信息对应的序号连续分配。
步骤402,通过空闲索引ulldlelndex得到本次分配的资源进行上报。
本步骤中,假定资源管理表和资源池的当前状态为初始状态,即如图 5a所示。空闲索引的值为0 ,元素号为空闲索引的指针元素 ppStPoolCtrl[ulIdlelndex]为指向资源A,于是可得,ulldlelndex对应的资源 管理指针指向资源A。
在本实施例中,空闲索引对应的地址信息上的资源为本次分配的资源, 因此将资源A作为本次分配的资源进行上报,具体上报方式可以是将资源A 的地址信息上报给上层单元,由上层单元根据接收的地址信息在该资源A 上写入具体的转发表项,并将该资源A与HASH索引表进行关联。具体与 HASH索引表的关联方式可以采用背景技术中的方式,这里就不再赘述。
步骤403,重置空闲索引为当前空闲索引的下一个序号。
本发明中,空闲索引的下一个序号为远离空闲索引初始化方向上与空 闲索引相邻的序号,例如,将空闲索引初始化为所有序号的最小值时,空闲 索引的下一个序号就是序号增大方向上与空闲索引相邻的序号;将空闲索引 初始化为所有序号的最大值时,空闲索引的下一个序号就是序号减小方向上 与空闲索引相邻的序号。由于本实施例中,空闲索引初始化为指针数组的首 元素号,也就是所有序号中的最小值,因此,远离初始化方向为序号增大的 方向,当前空闲索引的下一个序号即为当前空闲索引加1,也就是将空闲索 引向右移动一个位置,移动后如图5b所示。
经过上述步骤402-403的操作后, 一次资源分配流程结束。在此次资
源分配完成后,资源管理表和资源池的当前状态(分配索引的重置方式采用
第三种)如图5b所示。
依照上述步骤402 - 403的操作进行三次资源分配后,资源管理表和资 源池的状态(分配索引的重置方式釆用第三种)如图5c所示。
根据图5c可见,经过上迷资源分配后,在资源管理表中,所有小于空 闲索引的序号所对应的地址信息均是已分配资源的地址信息,所有大于等于 空闲索引的序号所对应的地址信息均是未分配资源的地址信息。因此可以利 用资源管理表和空闲索引将已分配资源和未分配资源分界,从而在分配资源 时,直接将空闲索引对应地址信息上的资源作为分配资源上报,保证资源分 配的时间复杂度为o(l)。同时,由于资源ID始终为该资源的资源管理指针 的元素号,因此,通过比较资源ID和空闲索引的大小即可以判断该资源是 否是已分配的资源。具体在资源释放和报文转发时,需要进行是否为已分配 资源的判断。
在上述具体流程中,将空闲索引初始化为所有序号中的最小值,事实上, 也可以将空闲索引初始化为所有序号中的最大值,这时,在分配资源后进行 空闲索引的重置时,则相应地将空闲索引依次减1,使已分配资源地址信息 对应的序号均大于空闲索引,保证资源管理表中表征的资源分配状况是连续的。
上述资源分配过程由控制核中的资源管理单元实现。
在资源管理的过程中,还可以对已分配的资源进行释放,本实施例中释 放资源的具体操作包括如下步骤
步骤404,确定要释放的资源以及该资源地址信息对应的序号,并确定 上次分配资源的地址信息对应的序号。
本步骤中,假定当前资源管理表和资源池的状态如图5d所示,要释放 资源C,根据该资源地址信息确定对应的序号,即2,资源C的资源管理指 针为ppStPoolCtrl[2];当前空闲索引为n-3,则上次分配资源D对应的序号 为ulldlelndex-l ,资源D的指针为ppStPoolCtrl[ulIdlelndex-l],也就是ppStPoolCtrl[n-4]。
步骤405,交换步骤404中确定的两个序号所对应的地址信息。 本步骤中,交换序号2和序号ulldlelndex-l对应的地址信息,j吏
ppStPoolCtrl[ulIdlelndex-l]指向本次释放资源C,使ppStPoolCtrl[2]指向上次
分配的资源D。
步骤406,交换上次分配资源D的资源ID和本次释放资源C的资源ID。
由于上一步骤改变了资源C和资源D的地址信息在资源管理表中的保 存位置,因此需要更新资源ID,以保证资源ID的取值为资源的地址信息在 资源管理表中的保存位置。
步骤407,重置空闲索引为当前空闲索引的上一个序号。
本发明中,空闲索引的上一个序号为靠近空闲索引初始化方向与空闲 索引相邻的序号。由于本实施例中空闲索引初始化为指针数组第一个元素的 元素号,因此空闲索引的上一个序号即为当前空闲索引减1。图5e即为资源 释放后资源管理表和资源池的状态示意图。
这样,就使空闲索引表项指向本次释放的资源,由前述可知,本实施例 中,大于等于空闲索引的序号所对应地址信息上的资源均是未分配的资源, 因此通过上述操作达到了释放资源的目的,但又未真正删除该资源上写入的 转发表项。此时,对于正在访问该资源的转发核,仍然可以通过读取该资源 地址上的内容确定转发表项的具体内容,并进行报文转发,不会有任何影响, 达到了延迟删除的目的,但却没有带来延迟删除的算法复杂度。
本实施例中的方式可以利用图3所示的控制核来实现。具体地,本实施 例还提供了图6所示的控制核的具体结构,该控制核为图3所示控制核的一 种具体实施方式
。如图6所示,该控制核包括配置单元和资源管理单元, 利用该控制核实现对多核系统中资源的管理和分配。其中,资源管理单元包 括资源分配子单元和资源释放子单元。
在该控制核中,配置单元,建立资源管理表,该资源管理表包括若干表 项,每个表项标有自己的序号,所述资源管理表的各个表项保存资源池中各200710121337.8
说明书第17/28页
可分配资源的地址信息及其对应的序号;为资源管理表设置空闲索引,该空 闲索引索引到资源管理表的表项,该表项将资源管理表分成两部分,其中一 部分为存储所有已分配资源的地址信息的表项, 一部分为存储未分配资源的 地址信息的表项。
资源管理单元中的资源分配子单元,用于确定所述空闲索引对应的地址 信息,将该地址信息上的资源作为本次分配的资源上报;重置空闲索引为当
前空闲索引的下一个序号。
资源管理单元中的资源释放子单元,用于在进行资源释放时,确定要释 放资源地址信息对应的序号和上一次分配资源地址信息对应的序号,交换确
定的两个序号对应的地址信息;重置空闲索引为当前空闲索引的上一个序 号。
由上述可见,在本实施例中,进行资源分配时采用的方式为按照资源 管理表中的序号顺序分配资源,从而保证资源分配后,所有已分配资源的地 址信息是连续的;进行资源释放时,将释放资源的地址信息对应的序号与上 次分配资源的地址信息所对应的序号交换,并将空闲索引设为交换后释放资 源的地址信息对应的序号,从而保证资源释放后,所有已分配资源的地址信 息仍然是连续的。这样,在任意时刻,资源管理表中表征的资源分配状况均 是连续的,在进行资源分配时,就不需要再遍历资源池,而可以利用空闲索 引直接找到未分配的资源进行分配,大大提高了资源分配效率。同时,由于 资源释放过程中,只是将释放资源的地址信息保存在未分配资源的位置上, 并未真正删除资源,因此能够达到延迟删除的目的,但并未引入延迟删除的 算法复杂度,更易于实现。
如前所述,将空闲索引索引到分界表项可以有两种选择,即索引到分界 处的已分配资源对应的表项和索引到分界处未分配资源对应的表项,由本实 施例中步骤402-403中所示的资源分配过程可见,该空闲索引索引到分界 处的未分配资源对应的表项,因此其分配过程为首先将空闲索引对应表项 中保存的地址信息上的资源作为本次分配资源上报,然后重置空闲索引为下
一个表项序号,使该空闲索引仍然索引到所述分界处的未分配资源对应的表 项。当然,也可以在最初将空闲索引索引到所述分界处的已分配资源对应的
表项,相应地,其资源分配过程为首先将空闲索引重置为当前空闲索引的 下一个表项序号,然后将重置后空闲索引对应表项中保存的地址信息上的资 源作为本次分配资源上报,从而使空闲索引仍然索引到所述分界处的已分配 资源对应的表项。对于后一种方式,在对空闲索引初始化后的第一次资源分 配时,不需要重置空闲索引,而直接将空闲索引初始化时对应表项中保存的 相应资源作为分配资源上报。其余资源释放过程相同,这里就不再赘述。 实施例二
本实施例中,进一步引入分配索引进行资源分配,同样能够保证资源分 配后,已分配资源的地址信息所对应的序号是连续的,具体实施方式
见下面 的描述。
图7为本发明实施例二中资源管理方法的具体流程图。如图7所示,该 方法包括
步骤701,预先创建并初始化资源管理表,保存资源池中各可分配资源 的地址信息,设置空闲索引和分配索引以及资源ID。
本实施例中,资源管理表利用 一个指针数组ppStPoolCtrl[]的形式实现, 用于保存资源池中各可分配资源的地址信息和为其设置的序号的对应关系。 具体地,指针数组中的每个元素,指向资源池中的一个资源,称为该资源的 资源管理措针,也就是保存该资源的地址信息;指针数组中各元素的元素号 就是资源管理表中各个表项的序号。
为资源管理表设置空闲索引(ulldlelndex )和分配索引(ulAllocIndex )。 如前所述,本文中空闲索引和分配索引为两个变量,它们的取值为,保存资 源地址信息表项的序号。本步骤对空闲索引和分配索引进行初始化,将空闲 索引初始化为所有序号中的最小值或最大值,将分配索引初始化为除空闲索 引外的任意一个未分配资源地址信息对应的序号。具体在本实施例中,由于 指针数组的元素号即为序号,因此优选地,将空闲索引初始化为指针数组的
首元素号,将分配索引初始化为指针数组最后一个元素的元素号。
另外,为保证资源分配过程中,能够通过资源池中的资源确定资源的已
分配和未分配状态,优选地,为资源池中的各个资源设置资源ID(ulResid) 属性,该资源ID的取值与保存资源的地址信息的表项序号相等,也就是资 源管理指针在指针数组中的元素号。这里,资源ID与前述序号的差别在于, 资源ID是在资源池中为各个资源保存的与资源对应的属性值,序号是在资 源管理表中保存的与资源地址信息对应的值,二者从不同的逻辑结构中体现 对应资源的分配状态。具体地,从资源池的角度,可以利用某资源的资源ID 与空闲索引的大小关系确定该资源是否已分配;从资源管理表的角度,可以 利用某资源地址信息对应的序号与空闲索引的大小关系确定该资源是否已 分配,详细的大小比较过程和结果判定将在后续的描述中介绍。
至此,资源管理表和资源池的初始化完成,建立了如图8a所示的指针 数组的每个元素与资源池中的资源对应关系。本步骤中的设置操作由多核系 统控制核中的配置单元完成。
在上述初始化完成后,即可以利用资源管理表+资源池的方案进行资源 分配,具体一次资源分配过程包括以下步骤
在本实施例中,资源分配是从资源管理表中右边元素所指向的资源开始的。
步骤702,通过分配索引ulAllocIndex得到本次分配的资源进行上报, 通过空闲索引ulldlelndex得到资源。
本步骤中,假定资源管理表和资源池的当前状态为初始状态,即如图 5a所示。分配索引的值为n ,元素号为分配索引的指针元素 ppStPoolCtrl[ulAllocIndex]指向资源A,于是可得,ulAllocIndex对应的资源 管理指针指向资源A;空闲索引的值为0,元素号为空闲索引的指针元素 ppStPoolCtrl[ulIdlelndex]为指向资源B,于是可得,ulldlelndex对应的资源 管理指针指向资源B。
在本发明中,分配索引对应的地址信息上的资源为本次分配的资源,因
此将资源A作为本次分配的资源进行上报,具体上报方式可以是将资源A 的地址信息上报给上层单元,由上层单元根据接收的地址信息在该资源A 上写入具体的转发表项,并将该资源A与HASH索引表进行关联。具体与 HASH索引表的关联方式可以采用背景技术中的方式,这里就不再赘述。 步骤703,交换空闲索引对应的地址信息与分配索引对应的地址信息。 本步骤中,资源管理表中空闲索引对应的地址信息 ppStPoolCtrl[ulIdlelndex]是未分配资源B的地址信息,分配索《I对应的地址 信息ppStPoolCtrl[ulAUocIndex]是本次分配资源A的地址信息,将二者交换, 也就是将本次分配资源A的地址信息与空闲索引相对应,即 ppStPoolCtrl[ulIdleIndex] = *A,将未分配资源B的地址信息与分配索引相对 应,即ppStPoolCtrl[ulAllocIndex] = *B。
步骤704,交换资源A和资源B的资源ID。
在步骤703中,已经将资源A和资源B的地址信息保存位置进行了交 换,因此,在本步骤中,需要将相应资源ID进行更新。具体地,将资源A 的资源ID更新为当前指向资源A的资源管理指针的元素号,即元素号0; 将资源B的资源ID更新为当前指向资源B的资源管理指针的元素号,即元 素号n。
步骤705,重置空闲索引为当前空闲索引的下一个序号,重置分配索引 为剩余的任意一个可分配资源地址信息对应的序号。
本发明中,空闲索引的下一个序号为远离空闲索引初始化方向上与空 闲索引相邻的序号,例如,将空闲索引初始化为所有序号的最小值时,空闲 索引的下一个序号就是序号增大方向上与空闲索引相邻的序号;将空闲索引 初始化为所有序号的最大值时,空闲索引的下一个序号就是序号减小方向上 与空闲索引相邻的序号。由于本实施例中,空闲索引初始化为指针数组的首 元素号,也就是所有序号中的最小值,因此,远离初始化方向为序号增大的 方向,当前空闲索引的下一个序号即为当前空闲索引加1,也就是将空闲索 引向右移动一个位置,移动后如图8b所示。
重置分配索引的方式可以有多种
1、 将分配索引保持不变;
2、 将分配索引设置为大于空闲索引的任意一个序号;
3、 将分配索引设置为沿远离分配索引初始化方向上的下一个序号,即 将分配索引减l。这种方式下,能够保证每次资源分配完成后,空闲索引和 分配索引从资源管理表的两端向中间移动一个元素号。随着资源分配的进 行,可能会出现分配索引和空闲索引相遇的情形,当二者相遇(即减l后的 分配索引小于或等于重置后的空闲索引)时,将分配索引设置为其初始化时 的取值,即指针数组最后一个元素的元素号(也就是所有序号中的最大值), 空闲索引不变,继续分配资源,空闲索引和分配索引做相向移动,循环往复, 直到空闲索引移动到分配索引的初始化值,所有资源分配完毕。从而使资源 分配能够循环进行。
上述三种重置分配索引的方式均能够保证分配索引对应剩余的可分配 资源的地址信息。其中,第三种方式为优选方式,它能够保证资源分配的循 环进行,与后续的资源释放方式结合,可以实现在资源分配和释放的过程中, 避免出现刚被释放的资源即被分配的情况出现。
经过上述步骤702-705的操作后, 一次资源分配流程结束。在此次资 源分配完成后,资源管理表和资源池的当前状态(分配索引的重置方式采用 第三种)如图8b所示。
由上述过程可知,在步骤705的重置空闲索引前,本次分配资源的地址 信息对应的是空闲索引,那么,当空闲索引重置后,则本次分配资源的地址 信息所对应的序号的下一个序号为空闲索引,在下次分配资源时,仍然会利 用上述步骤将空闲索引与分配索引对应的地址信息进行交换,从而使本次分 配资源的地址信息所对应的序号的下一个序号对应下次分配资源的地址信 息,也就是说,连续两次分配资源的地址信息所对应的序号是连续的。如此 循环,便能够保证在任意次资源分配完毕后,所有已分配资源的地址信息对 应的序号均是连续的,也就意味着已分配资源的地址信息是连续排列的,同
时,最后一次分配资源的地址信息对应序号的下一个序号为空闲索引。可见, 按照本实施例的方式,已分配资源的地址信息排列是连续的,并且,通过空 闲索引能够定位该连续排列的已分配资源地址信息所对应的序号区域。
具体地,依照上述步骤702-705的操作进行三次资源分配后,资源管 理表和资源池的状态(分配索引的重置方式采用第三种)如图8c所示。
根据图8c可见,经过上述资源分配后,在资源管理表中,所有小于空 闲索引的序号所对应的地址信息均是已分配资源的地址信息,所有大于等于 空闲索引的序号所对应的地址信息均是未分配资源的地址信息。因此可以利 用资源管理表和空闲索引将已分配资源和未分配资源分界,从而在分配资源 时,不需要遍历整个资源池查找空闲资源,提高了资源分配效率。并且,利 用每次资源分配完毕后的分配索引重置,保证资源分配的时间复杂度为 o(l)。同时,由于资源ID始终为该资源的资源管理指针的元素号,因此, 通过比较资源ID和空闲索引的大小即可以判断该资源是否是已分配的资 源。具体在资源释放和报文转发时,需要进行是否为已分配资源的判断。
在上述具体流程中,将空闲索引初始化为所有序号中的最小值,将分配 索引初始化为所有序号中的最大值,事实上,也可以将空闲索引初始化为所 有序号中的最大值,将分配索引初始化为所有序号中的最小值,这时,在分 配资源后进行空闲索引和分配索引的重置时,则相应地将空闲索引依次减1, 优选地,将分配索引依次加1,从而使分配索引和空闲索引依旧做相向运动, 使已分配资源地址信息对应的序号均大于空闲索引,保证资源管理表中表征 的资源分配状况是连续的。
上述资源分配过程由控制核中的资源管理单元实现。通过上述分配方 式,使每次进行资源分配时,将分配索引对应的地址信息上的可分配资源作 为此次分配的资源上报,并在分配完成后,将此次分配的资源的地址信息与 空闲索引相对应,再将空闲索引重置为当前空闲索引的下一个序号。如此循 环下去,便能够保证已分配资源的地址信息所对应的序号均是连续的,并且 已分配资源与未分配资源的地址信息对应的序号通过空闲索引分界,从而可
以根据空闲索引确定未分配资源对应的地址信息,进而直接在未分配的资源 中选择,不需要遍历整个资源池,提高了资源分配效率。
在资源管理的过程中,还可以对已分配的资源进行释放,本实施例中释
放资源的具体操作包括如下步骤
步骤706,确定要释放的资源以及该资源地址信息对应的序号,并确定 上次分配资源的地址信息对应的序号。
本步骤中,假定当前资源管理表和资源池的状态如图8d所示,要释放 资源C,根据该资源地址信息确定对应的序号,即2,资源C的资源管理指 针为ppStPoolCtrl[2];当前空闲索引为n-3,则上次分配资源D对应的序号 为ulldlelndex-l ,资源D的指针为ppStPoolCtrl[ulIdlelndex-l],也就是 ppStPoolCtrl[n-4]。
步骤707,交换步骤706中确定的两个序号所对应的地址信息。
本步骤中,交换序号2和序号ulldlelndex-l对应的地址信息,使 ppStPoolCtrl[ulIdlelndex-l]指向本次释放资源C,使ppStPoolCtrl[2]指向上次 分配的资源D。
步骤708,交换上次分配资源D的资源ID和本次释放资源C的资源ID。 本步骤与步骤704中相同,由于上一步骤改变了资源C和资源D的地
址信息在资源管理表中的保存位置,因此需要更新资源ID,以保证资源ID
的取值为资源的地址信息在资源管理表中的保存位置。
步骤709,重置空闲索引为当前空闲索引的上一个序号。
本发明中,空闲索引的上一个序号为靠近空闲索引初始化方向与空闲
索引相邻的序号。由于本实施例中空闲索引初始化为指针数组第一个元素的
元素号,因此空闲索引的上一个序号即为当前空闲索引减1。图8e即为资源
释放后资源管理表和资源池的状态示意图。
这样,就使空闲索引表项指向本次释放的资源,由前述可知,本实施例
中,大于等于空闲索引的序号所对应地址信息上的资源均是未分配的资源,
因此通过上述操作达到了释放资源的目的,但又未真正删除该资源上写入的
转发表项。此时,对于正在访问该资源的转发核,仍然可以通过读取该资源 地址上的内容确定转发表项的具体内容,并进行报文转发,不会有任何影响, 达到了延迟删除的目的,但却没有带来延迟删除的算法复杂度。同时,上述 释放资源的方式结合前述分配索引和空闲索引从资源管理表的两端向中间 移动的方式,能够保证释放后的资源不会立即被分配,从而避免同一内存空 间的频繁使用,保证内存空间的利用率均衡。由于本次释放资源的地址信息 对应的序号为空闲索引,因此,该释放资源是相对较晚被分配的资源,保证 资源释放后不会马上被分配,避免同一个资源频繁使用,保证资源利用率均 衡。
上述步骤706~709即为释放一个资源的过程,该操作由控制核中的资 源管理单元实现。具体地,资源管理单元首先确定释放资源的地址信息与上 次分配资源的地址信息所对应的序号,将两个序号所对应的地址信息进行交 换,然后,设置空闲索引为当前空闲索引的上一个序号,从而使空闲索引对 应释放资源的地址信息,进而使释放资源成为未分配资源。同时,该释放资 源的内容并未真正被删除,正在访问该资源的核仍可以继续访问,达到了延 迟删除的目的,却没有延迟删除带来的算法复杂度。
上述图7所示的资源分配方法流程中的操作均由多核系统中的控制核 来完成。具体地,本实施例还提供了一种控制核的具体实施方式
结构,该控 制核的结构与图6所示的相同,包括配置单元和资源管理单元,利用该控 制核实现对多核系统中资源的管理和分配。其中,资源管理单元包括资源分 配子单元和资源释放子单元。
在该控制核中,配置单元,用于建立资源管理表,该资源管理表包括若 干表项,每个表项标有自己的序号,所述资源管理表的各个表项保存资源池 中各可分配资源的地址信息及其对应的序号;为资源管理表设置空闲索引和 分配索引,该空闲索引索引到资源管理表的表项,该表项将资源管理表分成 两部分,其中一部分为存储所有已分配资源的地址信息的表项, 一部分为存 储未分配资源的地址信息的表项。进一步优选地,可以将空闲索引初始化为
资源管理表中所有表项序号的最小值或最大值,并相应地,在空闲索引初始
化为最小值时,将分配索引初始化为资源管理表中所有表项序号的最大值; 在空闲索引初始化为最大值时,将分配索引初始化为资源管理表中所有表项 序号的最小值。
资源管理单元中的资源分配子单元,用于确定所述分配索引对应的地址 信息,将该地址信息上的资源作为本次分配的资源上报;交换所述空闲索引 对应的地址信息与分配索引对应的地址信息;重置空闲索引为当前空闲索引 的下一个序号,重置分配索引为剩余的任意一个可分配资源的地址信息对应 的序号。进一步优选地,在重置分配索引时,可以将分配索引重置为当前分 配索引的下一个序号。
资源管理单元中的资源释放子单元,用于在进行资源释放时,确定要释 放资源地址信息对应的序号和上一次分配资源地址信息对应的序号,交换确 定的两个序号对应的地址信息;重置空闲索引为当前空闲索引的上一个序 号。
由上述可见,在本实施例中,利用分配索引进行资源分配,并在资源分 配后,交换分配索引和空闲索引对应的地址信息,从而保证资源分配后,所 有已分配资源的地址信息是连续的;进行资源释放时,将释放资源的地址信 息对应的序号与上次分配资源的地址信息所对应的序号交换,并将空闲索引 设为交换后释放资源的地址信息对应的序号,从而保证资源释放后,所有已 分配资源的地址信息仍然是连续的。并且,优选地,利用分配索引进行资源 分配时,由资源管理表的一端开始,资源分配后,将分配索引重置为当前分 配索引的下一个序号,从而保证刚释放的资源不会被立即分配,平衡了资源 利用率。
与实施例一中所描述的空闲索引索引到的分界表项的两种选择相同,本 实施例中的空闲索引也有两种选择,即索引到分界处的已分配资源对应的表 项和索引到分界处未分配资源对应的表项。由本实施例中步骤702-705中 所示的资源分配过程可见,该空闲索引索引到分界处的未分配资源对应的表项,因此其分配过程为首先将分配索引对应表项中保存的地址信息上的资 源作为本次分配资源上报,然后交换分配索引与空闲索引对应表项中保存的 地址信息,并交换资源ID,最后重置空闲索引和分配索引,使该空闲索引 仍然索引到所述分界处的未分配资源对应的表项。当然,也可以在最初,将 空闲索引索引到所述分界处的已分配资源对应的表项,相应地,其资源分配 过程为首先将分配索引对应表项中保存的地址信息上的资源作为本次分配 资源上报,将空闲索引重置为当前空闲索引的下一个表项序号,然后将重置 后空闲索引对应表项和分配索引对应表项中保存的地址信息交换,并交换资 源ID,最后重置分配索引;从而使空闲索引仍然索引到所述分界处的已分 配资源对应的表项。对于后一种方式,在对空闲索引初始化后的第一次资源 分配时,不需要重置空闲索引,而直接将空闲索引和分配索引所对应表项中 保存的地址信息进行交换。其余资源释放过程相同,这里就不再赘述。 实施例三
对基于上述实施例一和二中的资源管理方法,利用在分配的资源上写入 转发表项后可以形成报文转发表。本实施例对利用该转发表进行报文转发的具体实施方式
进行详述。
图9为本实施例中进行报文转发的具体流程。如图9所示,该流程包括 步骤卯l,接收需要转发的报文,根据报文内容提取关键信息计算HASH值。
步骤902,根据HASH值确定对应的资源和该资源的资源ID。
根据HASH值确定对应资源的方式可以采用与背景技术的方案中一致 的方式,这里就不再赘述。根据该资源确定资源ID,也就是该资源的资源 管理指针在资源管理表中的元素号。
步骤903,利用资源ID判断该资源上写入的转发表项是否有效,若是, 则执行步骤904,否则执行步骤905。
本步骤中,判断转发表项是否有效的操作实际上就是判断资源是否已分 配的操作。具体地,由于空闲索引可能索引到分界处的两个不同表项,并且
空闲索引可以初始化为所有序号的最小值和最大值,因此,判断转发表项是 否有效的方式也有不同。
假定将空闲索引初始化为所有序号中的最小值,并且空闲索引索引到与 存储已分配资源的地址信息表项相邻的存储未分配资源的地址信息的表项,
具体判断转发表项是否有效的方式可以为在资源管理表中指针元素指向的 资源尚未分配完毕时,比较资源ID和资源管理表的空闲索引,若前者小于 后者,则判定该资源上写入的转发表项有效,否则,判定该资源上写入的转 发表项无效;若资源管理表中指针元素所指向的资源均已分配完毕,则直接 判定转发表项有效。
假定将空闲索引初始化为所有序号中的最小值,并且空闲索引索引到存 储最近一次分配资源的地址信息的表项,具体判断转发表项是否有效的方式 可以为在资源管理表中指针元素指向的资源尚未分配完毕时,比较资源ID 和资源管理表的空闲索引,若前者小于或等于后者,则判定该资源上写入的 转发表项有效,否则,判定该资源上写入的转发表项无效;若资源管理表中 指针元素所指向的资源均已分配完毕,则直接判定转发表项有效。
假定空闲索引初始化为所有序号中的最大值,并且空闲索引索引到与存 储已分配资源的地址信息表项相邻的存储未分配资源的地址信息的表项,具 体判断转发表项是否有效的方式可以为在资源管理表中指针元素所指向的 资源尚未分配完毕时,比较资源ID和资源管理表的空闲索引,若前者大于 后者,则判定该资源上写入的转发表项有效,否则,判定该资源上写入的转 发表项无效;若资源管理表中指针元素所指向的资源均已分配完毕,则直接 判定转发表项有效。
假定将空闲索引初始化为所有序号中的最大值,并且空闲索引索引到存 储最近一次分配资源的地址信息的表项,具体判断转发表项是否有效的方式 可以为在资源管理表中指针元素指向的资源尚未分配完毕时,比较资源ID 和资源管理表的空闲索引,若前者大于或等于后者,则判定该资源上写入的 转发表项有效,否则,判定该资源上写入的转发表项无效;若资源管理表中指针元素所指向的资源均已分配完毕,则直接判定转发表项有效。
步骤904,根据步骤902确定的资源上写入的转发表项进行报文转发。 步骤卯5,确定根据HASH值查找到的转发表项已无效,结束转发流程。 上述对报文进行转发的流程由多核系统中的转发核来实现。由上述流程 可见,在报文转发过程中,可以利用资源ID进行转发表项有效性的判断, 保证转发的正常进行。
基于上述图4和图7所示的资源管理方法,在需要对转发表进行遍历搡 作(例如,要显示所有有效表项时)时,只需要遍历小于空闲索引的序号所 对应的地址信息上的少数有效资源,从而避免了遍历整个资源池,大大提高 了遍历效率。在删除整个转发表时,只需要将空闲索引置为其初始化的值, 这样,资源管理表中所有指针元素所指向的资源就均为未分配状态,即实现 了删除转发表项的目的,避免了遍历整个资源池找到所有有效表项,再逐个 删除,大大提高了删除效率。
由上述可见,在路由器产品中应用上述本发明的方法和控制核,对转发 效率敏感的转发报文,能够大大提高其报文转发效率、加快转发表项建立速 度,有效解决访问冲突问题。事实上,对于其它的各类多核系统在进行资源 分配时均可以利用上述资源分配方法进行资源管理,从而保证资源分配的效率。
综上,本发明通过建立资源地址信息与序号的对应关系,并利用空闲索 引、分配索引对资源池中的资源进行有效管理,从而提高了资源分配效率和 遍历资源的效率,并且利用资源管理表和资源ID实现了延迟删除的功能, 解决了访问冲突问题。
以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。 凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应 包含在本发明的保护范围之内。
权利要求
1、一种多核系统的资源管理方法,其特征在于,预先建立资源管理表,该资源管理表包括若干表项,每个表项标有自己的序号,所述资源管理表的各个表项用于保存资源池中各可分配资源的地址信息;为资源管理表设置空闲索引,该空闲索引索引到资源管理表的表项,该表项将资源管理表分成两部分,其中一部分为存储所有已分配资源的地址信息的表项,一部分为存储未分配资源的地址信息的表项;在进行资源释放时,确定要释放资源地址信息对应的资源管理表项的序号和最近一次分配资源地址信息所对应的资源管理表项的序号,交换所述的两个序号表项中保存的地址信息;重置空闲索引,使其索引到资源管理表的另一个表项,该表项将资源管理表分成两部分,其中一部分为存储所有已分配资源的地址信息的表项,一部分为存储未分配资源的地址信息的表项。
2、 根据权利要求1所述的方法,其特征在于,该方法进一步包括为资源 管理表设置分配索引,所述分配索引索引到任意一个可分配资源的地址信息对 应的资源管理表项;所述空闲索引索引到资源管理表的表项为所述空闲索引索引到与存储已 分配资源的地址信息表项相邻的存储未分配资源的地址信息的表项;资源分配的方式为确定所述分配索引对应的地址信息,将该地址信息上 的资源作为本次分配的资源上报;交换资源管理表中所述空闲索引对应的未分 配资源的地址信息与分配索引对应的地址信息;重置空闲索引为当前空闲索引 的下一个序号,重置分配索引为剩余的一个可分配资源的地址信息对应的资源 管理表项的序号。
3、 根据权利要求2所述的方法,其特征在于,所述设置空闲索引为将所述空闲索引初始化为所有序号中的最小值; 所述设置分配索引为将所述分配索引初始化为所有序号中的最大值; 所述重置分配索引为剩余的一个可分配资源的地址信息对应资源管理表项 的序号为将当前分配索引减l;并判断减1后的分配索引是否小于等于所述重置后的空闲索引,若是,则设置分配索引为所有序号中的最大值,否则,设置分配索引为所述减1后的分配索引;或者,保持当前分配索引不变;或者, 设置分配索引为大于当前空闲索引的任意一个序号。
4、 根据权利要求2所述的方法,其特征在于,所述设置空闲索引为将空闲索引初始化为所有序号中的最大值; 所述设置分配索引为将分配索引初始化为所有序号中的最小值; 所述重置分配索引为可分配资源地址信息对应的任意一个序号为将当前 分配索引加1;并判断加l后的分配索引是否大于等于所述重置后的空闲索引, 若是,则设置分配索引为所有序号中的最小值,否则,设置分配索引为加l后 的分配索引;或者,保持当前分配索引不变;或者,设置分配索引为小于当前 空闲索引的任意一个序号。
5、 根据权利要求1所述的方法,其特征在于,该方法进一步包括为资源 管理表设置分配索引,所述分配索引索引到任意一个可分配资源的地址信息对 应资源管理表项的序号;所述空闲索引索引到资源管理表的表项为所述空闲索引索引到存储最近 一次分配资源的地址信息的表项;资源分配的方式为确定所述分配索引对应的地址信息,将该地址信息上 的资源作为本次分配的资源上报;重置空闲索引为当前空闲索引的下一个序号, 交换资源管理表中所述重置后的空闲索引对应的未分配资源的地址信息与分配 索引对应的地址信息;重置分配索引为剩余的一个可分配资源的地址信息对应 的序号。
6、 根据权利要求5所述的方法,其特征在于,所述设置空闲索引为将所述空闲索引初始化为所有序号中的最小值; 所述设置分配索引为将所述分配索引初始化为所有序号中的最大值; 所述重置分配索引为剩余的任意一个可分配资源的地址信息对应的序号 为将当前分配索引减1;并判断减1后的分配索引是否小于等于所述重置后 空闲索引加l的值,若是,则设置分配索引为所有序号中的最大值,否则,设 置分配索引为所述减1后的分配索引;或者,保持当前分配索引不变;或者, 设置分配索引为大于当前空闲索引加1后的任意一个序号。
7、 根据权利要求6所述的方法,其特征在于, 所述设置空闲索引为将空闲索引初始化为所有序号中的最大值; 所述设置分配索引为将分配索引初始化为所有序号中的最小值; 所述重置分配索引为可分配资源地址信息对应的任意一个序号为将当前分配索引加1;并判断加1后的分配索引是否大于等于所述重置后空闲索引减1 的值,若是,则设置分配索引为所有序号中的最小值,否则,设置分配索引为 加l后的分配索引;或者,保持当前分配索引不变;或者,设置分配索引为小 于当前空闲索引减1后的任意一个序号。
8、 根据权利要求1所述的方法,其特征在于,当所述空闲索引索引到与存储已分配资源的地址信息表项相邻的存储未分 配资源的地址信息的表项时,资源分配的方式为确定所述空闲索引对应的地 址信息,将该地址信息上的资源作为本次分配的资源上"^艮;重置空闲索引为当 前空闲索引的下一个序号;当所述空闲索引索引到存储最近一次分配资源的地址信息的表项时,资源 分配的方式为重置空闲索引为当前空闲索引的下一个序号;确定所述重置后 空闲索引对应的地址信息,将该地址信息上的资源作为本次分配的资源上报。
9、 根据权利要求1到8中任一所述的方法,其特征在于,该方法进一步包 括预先为资源池中的资源设置资源标识ID,所述资源ID的取值与资源地址 信息对应的资源管理表项的序号相等;在进行资源分配并上报分配资源后,将上报的资源与HASH索引表进行关 联,并在上报的资源上写入转发表项的内容;在所述交换地址信息后,进一步包括确定交换的两个地址信息上的两个 资源,并交换确定的两个资源的资源ID;当接收到需转发的报文时,根据报文内容提取关键信息计算HASH值,根 据HASH值获取对应的资源和该资源的资源ID;利用所述资源ID判断该资源 上写入的转发表项是否有效,若是,则根据该资源上的转发表项转发接收的报文;否则,返回查找转发表失败。
10、 根据权利要求9所述的方法,其特征在于,所述利用资源ID判断资源 上写入的转发表项是否有效为当所述空闲索引被初始化为所有序号中的最小值、且所述空闲索引索引到 与存储已分配资源的地址信息表项相邻的存储未分配资源的地址信息的表项 时,判断所述资源ID是否小于当前空闲索引,若是,则判定该资源上写入的转 发表项有效,否则,判定该资源上写入的转发表项无效;当所述空闲索引被初始化为所有序号中的最小值、且所述空闲索引索引到 存储最近一次分配资源的地址信息的表项时,判断所述资源ID是否小于等于当 前空闲索引,若是,则判定该资源上写入的转发表项有效,否则,判定该资源 上写入的转发表项无效;当所述空闲索引^皮初始化为所有序号中的最大值、且所述空闲索引索引到 与存储已分配资源的地址信息表项相邻的存储未分配资源的地址信息的表项 时,判定所述资源ID是否大于当前空闲索引,若是,则判定该资源上写入的转 发表项有效,否则,判定该资源上写入的转发表项无效;当所述空闲索引被初始化为所有序号中的最大值、且所述空闲索引索引到 存储最近一次分配资源的地址信息的表项时,判断所述资源ID是否大于等于当 前空闲索引,若是,则判定该资源上写入的转发表项有效,否则,判定该资源 上写入的转发表项无效。
11、 根据权利要求1到8中任一所述的方法,其特征在于,该方法进一步 包括在释放所有已分配的资源时,设置所述空闲索引为初始化时的取值。
12、 一种多核系统中的控制核,其特征在于,该控制核包括 配置单元,用于建立资源管理表,该资源管理表包括若干表项,每个表项标有自己的序号,所述资源管理表用于保存资源池中各可分配资源的地址信息; 为资源管理表设置空闲索引,该空闲索引索引到资源管理表的表项,该表项将 资源管理表分成两部分,其中一部分为存储所有已分配资源的地址信息的表项, 一部分为存储未分配资源的地址信息的表项;资源管理单元,用于在进行资源释放时,确定要释放资源地址信息对应的 资源管理表的序号和最近一次分配资源地址信息对应的资源管理表的序号,交 换所述的两个序号表项中记录的资源地址信息;重置空闲索引,使其索引到资 源管理表的另一个表项,该表项将资源管理表分成两部分,其中一部分为存储 所有已分配资源的地址信息的表项, 一部分为存储未分配资源的地址信息的表 项。
13、根据权利要求12所述的控制核,其特征在于,所述资源管理单元包括 资源分配子单元和资源释放子单元;所述配置单元,进一步用于将所述空闲索引初始化为所有序号中的最小值 或最大值,为资源管理表设置分配索引,并根据空闲索引的初始化值,将分配 索引对应初始化为所有序号中的最大值或最小值;所述资源分配子单元,用于确定所述分配索引对应的地址信息,将该地址 信息上的资源作为本次分配的资源上报;交换所述空闲索引对应的地址信息与 分配索引对应的地址信息;重置空闲索引为当前空闲索引的下一个序号,重置 分配索引为当前分配索引的下一个序号;所述资源释放子单元,用于在进行资源释放时,确定要释放资源地址信息 对应的资源管理表的序号和最近一次分配资源地址信息对应的资源管理表的序 号,交换所述的两个序号表项中记录的资源地址信息;重置空闲索引,使其索 引到资源管理表的另一个表项,该表项将资源管理表分成两部分,其中一部分 为存储所有已分配资源的地址信息的表项, 一部分为存储未分配资源的地址信息的表项。
全文摘要
本发明公开了一种多核系统的资源管理方法,预先建立资源管理表,用于保存资源池中各可分配资源的地址信息;设置空闲索引,该空闲索引索引到资源管理表的表项,该表项将资源管理表分成存储所有已分配资源地址信息和存储未分配资源地址信息的两部分;进行资源释放时,确定要释放资源地址信息对应的资源管理表项的序号和最近一次分配资源地址信息所对应的资源管理表项的序号,交换该两个序号表项中保存的地址信息;重置空闲索引,使其索引到资源管理表另一个表项,该表项将资源管理表分成存储所有已分配资源地址信息和存储未分配资源地址信息的两部分。本发明还公开了多核系统的控制核。应用本发明,能够提高资源分配效率。
文档编号G06F17/30GK101110043SQ20071012133
公开日2008年1月23日 申请日期2007年9月4日 优先权日2007年9月4日
发明者张雪峰 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1