1.一种基于图划分的tcam的分配方法,包括:
将程序执行流程的控制流程图转换为条件变量图;
依据效用值贪心地从当前条件变量图的备选节点中选取下一级子图根节点,直至获得最终子图根节点的集合;
基于所述最终子图根节点的集合将所述条件变量图划分为若干最终子图;以及
依据所述最终子图为所述程序执行流程分配tcam。
2.根据权利要求1所述的分配方法,其中,通过以下方式确定所述效用值:
当由所述下一级子图根节点所确定的下一级子图的键值中至少有一个大于待分配tcam的规格时,至少基于所有下一级子图的键值之和确定所述效用值;或者
当由所述下一级子图根节点所确定的下一级子图的键值均小于或者等于待分配tcam的规格时,至少基于下一级子图所需占用的tcam数量以及tcam的平均资源占有率确定所述效用值。
3.根据权利要求2所述的分配方法,其中,
当由所述下一级子图根节点所确定的下一级子图的键值中至少有一个大于待分配的tcam的规格时,所述效用值表示为:
u=e
其中,e为所述下一级子图中所有子图的键值的总和;或者
当由所述下一级子图根节点所确定的下一级子图的键值均小于或者等于待分配的tcam的规格时,所述效用值表示为:
u=ν*n+ω*p
其中,n为由所述下一级子图的根节点的集合所确定的下一级子图所占用的tcam容器数量,p为单个tcam的平均占用率,p∈(0,1),ν,ω分别为权重系数。
4.根据权利要求2所述的分配方法,其中,
当由所述下一级子图根节点所确定的下一级子图的键值中至少有一个大于待分配的tcam的规格时,所述下一级子图的键值之和最小时所述效用值最优;或者
当由所述下一级子图根节点所确定的下一级子图的键值均小于或者等于待分配的tcam的规格时,所述效用值最大时所述效用值最优。
5.根据权利要求4所述的分配方法,其中,当由所述下一级子图根节点所确定的下一级子图的键值中至少有一个大于待分配的tcam的规格时,所述效用值基于所述下一级子图的最小键值确定,所述下一级子图的最小键值由所述下一级子图中节点的最小键值从下往上迭代计算获得,所述节点的最小键值为:
其中,et′为满足所述节点中条件的键值,
6.根据权利要求5所述的分配方法,其中,当所述节点为叶子节点时,所述节点的最小键值为:
el=min(et,ef)+1
其中,et为满足所述叶子节点中条件的键值,ef为不满足所述叶子节点中条件的键值。
7.根据权利要求5所述的分配方法,其中,所述满足所述节点中条件的键值通过以下方式计算获得:
当条件为x>a时,a的二进制编码中0的个数为所述节点的键值;
当条件为x==a时,所述节点的键值为1;
当条件为x<a时,a的二进制编码中1的个数为所述节点的键值;
当条件为x>a且y>b时,所述节点的键值为条件为x>a时节点的键值与条件为y>b时节点的键值之乘积;
当条件为x>a或y>b时,所述节点的键值为条件为x>a时节点的键值与条件为y>b时节点的键值之和,其中x、y为变量,a、b为条件值。
8.根据权利要求4所述的分配方法,其中,所述依据效用值贪心地从当前条件变量图的备选节点中选取下一级子图根节点,直至获得最终子图根节点的集合包括:
(8-1)从所述当前条件变量图选取备选节点;
(8-2)贪心地从所述备选节点中选取效用值最优的节点作为下一级子图根节点;
(8-3)将由所述下一级子图根节点所确定的下一级子图作为当前条件变量图,重复上述步骤(8-1)-(8-2),直至所述下一级子图的键值均小于或者等于待分配的tcam的规格且达到效用值最优;
(8-4)将所获得的全部子图根节点作为最终子图根节点的集合。
9.根据权利要求8所述的分配方法,还包括:
当所述备选节点中既包含使所确定的所述下一级子图的键值中至少有一个大于所述待分配tcam的规格的下一级子图根节点,又包含使所确定的下一级子图的键值均小于或等于待分配tcam的规格的下一级子图根节点时,贪心地从后者中选取效用值最优的节点作为下一级子图根节点。
10.根据权利要求1-9任一所述的分配方法,还包括:
基于所述最终子图之间的约束关系分配tcam。
11.根据权利要求10所述的分配方法,其中,所述基于所述最终子图之间的约束关系分配tcam包括:
至少基于所述子图之间的依赖性为所述子图分配tcam;和/或
至少基于所述子图的优先顺序为所述子图分配tcam,包括:
当所述子图之间存在依赖性,则上子图优先分配;或者
当所述子图之间不存在依赖性,则所述子图中记录条件较小的子图优先分配。