CN111736899B - 一种网络处理器上寄存器的分配方法 - Google Patents
一种网络处理器上寄存器的分配方法 Download PDFInfo
- Publication number
- CN111736899B CN111736899B CN202010474445.9A CN202010474445A CN111736899B CN 111736899 B CN111736899 B CN 111736899B CN 202010474445 A CN202010474445 A CN 202010474445A CN 111736899 B CN111736899 B CN 111736899B
- Authority
- CN
- China
- Prior art keywords
- subvariable
- variables
- sub
- variable
- priority
- 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.)
- Active
Links
Classifications
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种网络处理器上寄存器的分配方法,包括:依据原始变量的被访问情况将所述原始变量划分为若干子变量;对所述子变量进行活跃性分析并构建干涉图;至少基于所述干涉图中所述子变量的最大团信息确定所述子变量的优先度,其中,所述子变量的最大团信息是指所述子变量是否包含在最大团中,所述最大团是指所述干涉图中节点所代表的子变量的长度之和最大的完全子图;以及依据所述优先度分配寄存器。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种网络处理器上寄存器的分配方法。
背景技术
随着手机、云服务器、虚拟化等技术的发展,现代的网络处理器需要运行复杂的网络处理程序,交换机等网络设备对可编程性及灵活性需求日益上升,支持可自主编程的包处理操作的交换机也开始出现。当编译器将大规模网络处理程序部署到可编程交换机上时,不同于传统的寄存器分配,包处理程序的寄存器分配面临了更多软硬件限制的挑战。在硬件方面,交换机等设备对响应延迟有极高要求,寄存器分配问题中的主要难题--溢出(spill)通常会被禁止,因此寄存器分配的主要目标转变为尽可能减少寄存器的使用个数。在软件方面,包处理程序中存在大量的局部操作,变量的长度不规则,个体差别较大,因此偏移寻址操作会引发变量连续分配等问题。
现有技术中关于寄存器的分配通常采用图着色法。图着色方法是在假定寄存器的独立性与可交换性的基础上,将寄存器分配问题映射为图着色问题。图着色问题是经典的NPC问题,常使用近似算法求解,例如贪心算法,线性搜索算法等。对长度不一的变量,图着色方法通常将所有的变量或切分或扩展为相同长度的变量,或将所有变量扩展为标准大小(如8/16/32bits),并分成多个寄存器类,分开使用寄存器分配算法。
然而在实际应用中,变量之间可能存在着连续性,因此破坏了寄存器的独立性与可交换性,这在很大程度上影响了寄存器的分配方案的优劣。另一方面,由于无法精确描述变量部分的读写信息,普通的算法对变量一小部分的操作等效于对整个变量的操作,从而导致无法充分复用寄存器空间,造成空间的浪费。
因此,亟需一种更加有效的网络处理器上寄存器的分配方法以提高寄存器的利用率。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种网络处理器上寄存器的分配方法,包括:依据原始变量的被访问情况将所述原始变量划分为若干子变量;对所述子变量进行活跃性分析并构建干涉图;基于所述干涉图中所述子变量的最大团信息确定所述子变量的优先度,其中,所述子变量的最大团信息是指所述子变量是否包含在最大团中,所述最大团是指所述干涉图中节点所代表的子变量的长度之和最大的完全子图;以及依据所述优先度分配寄存器。
可选的,其中,所述依据原始变量的被访问情况将所述原始变量划分为若干子变量包括:按照最细粒度将所述原始变量划分为若干子变量。
可选的,上述方法还包括:删除所述原始变量中未被访问的子变量;记录子变量的连续性信息;以及依据所述子变量的优先度和连续性信息分配寄存器。
可选的,上述方法还包括:计算所述干涉图中所述子变量的干涉度;以及至少基于所述干涉图中所述子变量的最大团信息和干涉度确定所述子变量的优先度。
可选的,上述方法还包括:基于所述干涉图中所述子变量的最大团信息、干涉度以及长度确定所述子变量的优先度。
可选的,其中,确定所述子变量的优先度采用下列公式:
d(v)=δ(v)+α×Size(v)+(1-α)×degree(v)
其中,d(v)表示子变量的优先度,δ(ν)表示子变量的最大团信息,α为权重系数,Size(ν)表示子变量的长度,degree(ν)表示子变量的干涉度。
可选的,上述方法还包括:通过启发式方法调整所述子变量的优先度。
可选的,还包括:记录所述子变量的对齐约束信息;以及基于所述子变量的活跃性分析以及对齐约束信息构建所述干涉图。
本发明还提供了一种存储介质,其中存储有计算机程序,在所述计算机程序被处理器执行时,能够用于实现上述任一项的方法。
本发明还提供了一种电子设备,包括处理器和存储器,所述存储器中存储有计算机程序,在所述计算机程序被处理器执行时,能够用于实现上述中任一项所述的方法。
与现有技术相比,本发明的优点在于:
本发明通过将变量依据其被访问情况划分为若干子变量,可以精确描述连续性和变量部分读写指令带来的干涉信息,最大限度地复用可能的寄存器空间;此外,本发明采用的基于最大团信息的启发式分配方法,通过使用贪心策略,综合考虑变量的最大团信息、干涉度、长度以及连续性信息来确定寄存器的分配顺序,并通过启发式方法不断调优达到较优的分配方案,能够实现全局性的优良分配方案,对可编程交换机上包处理程序一类的不规则寄存器分配等具有良好的适用性。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1A示出了某商业网络处理器上的包处理程序中不同长度的变量的数量统计;
图1B示出了某商业网络处理器上的包处理程序中变量的被访问长度的占比统计;
图2示出了一个实施例中寄存器的分配方法;
图3示出了一个实施例中对单个原始变量进行划分的示意图;
图4示出了现有技术中未划分的原始变量的活跃期间及干涉图;
图5示出了一个实施例中划分后子变量的活跃期间及干涉图;
图6示出了现有技术中主要基于未划分的原始变量的干涉度进行寄存器分配的示意图;
图7示出了主要基于划分后的子变量的干涉度进行寄存器分配的示意图;
图8示出了一个实施例中依据划分后的子变量的优先度和连续性分配寄存器的示意图;
图9示出了对不同的包处理程序使用不同的寄存器分配方案的结果对比示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
传统的寄存器分配方法中往往将单个变量视为不可分割的整体,将寄存器分配问题映射为图着色问题,这要求不同寄存器之间的独立性与可交换性。然而实际问题中,网络处理器中部署的包处理程序通常存在变量长度变化大、连续性约束强、部分读写操作频繁等不规则情形,传统的图着色建模难以精确刻画寄存器的分配。
图1A示出了某商业网络处理器上的包处理程序中不同长度的变量的数量统计。图中横轴代表变量的数量,纵轴代表变量的长度。如图1A所示,不同长度的变量数量差别巨大,例如,长度为8bits的变量超过420个,而长度为10bits的变量少于10个。此外,变量之间的长度也呈现落差较大的特点,例如,最小的变量只有1bits,而最大的变量可达到384bits。图1B示出了某商业网络处理器上的包处理程序中变量的被访问长度的占比统计。如图1B所示,有45%的变量其被访问的长度仅占其总长度的1/4以下,有19%的变量其被访问的长度占其总长度的1/4-1/2,有2%的变量其被访问的长度占其总长度的1/2-3/4,有16%的变量其被访问长度占其总长度的3/4以上,仅有18%的变量被全部访问。
然而,传统的寄存器的分配方法一方面极少考虑到针对变量进行频繁的部分读写操作所造成的部分干涉问题,难以精确地描述变量干涉信息,另一方面缺乏对大规模应用程序中长度落差较大的变量之间的整体分配方案,也难以应用于大规模应用。
针对上述问题,本发明提供了一种网络处理器上寄存器的分配方法,在充分考虑原始变量的长度差别以及部分被访问的基础上,通过将原始变量划分为若干子变量并构建干涉图,依据干涉图中子变量的最大团信息等因素确定子变量的优先度并以此分配寄存器,以充分地复用寄存器空间,实现在多种不规则条件下大幅减少片上寄存器的使用数量,提高资源利用率。
图2示出了本发明一个实施例中寄存器的分配方法。如图2所示,该方法包括:
S210,依据原始变量的被访问情况将原始变量划分为若干子变量。
原始变量是指程序中原本定义的变量,原始变量没有按照变量的被部分访问的情况被分割为对应的子变量。本发明针对包处理程序中的变量被部分访问的情况,将原始变量划分成若干子变量,并针对子变量分配寄存器。在一个实施例中,可以依据对原始变量的读写和/或引用情况对其进行最细粒度的划分,即将原始变量中被单独读写和/或引用的部分分别划分为一个子变量。当两个或两个以上子变量中存在重叠部分时,将重叠部分单独划分为一个子变量,其余部分也各自形成子变量。在一个实施例中,在将原始变量按照最细粒度划分为若干子变量后,还可以删除其中从未被访问的子变量,并且记录被访问的子变量之间的连续性信息。子变量的连续性信息是指,两个或两个以上的子变量在原始变量中是连续分布的。在一个实施例中,还可以记录子变量之间的对齐约束信息。
图3示出了本发明一个实施例中对单个原始变量进行划分的示意图。如图3所示,假设一个原始变量V[0-24bits)的长度为24bits。依据原始变量V被访问的情况将其按照最细粒度划分,即先将原始变量V中被单独读写和/或引用的部分分别划分为一个子变量,得到V1[0-12bits)、V2[8-16bits)以及V3[20-24bits);同时由于V1[0-12bits)和V2[8-16bits)中的[8-12bits)部分被重复访问两次,因此将该重叠部分单独划分为一个子变量,V1和V2中除去该重叠部分的其余部分各自形成子变量,即得到V1′[0-8bits)、V2′[8-12bits)、V3′[12-16bits)、V4′[16-20bits)以及V5′[20-24bits)。因V4′[16-20bits)从未被访问,故可以将其删除。此外,V1′、V2′和V3′在原始变量V中是连续分布的,因此三者之间具有连续性。
通过将原始变量依据其被访问情况划分为若干子变量,能够可以精确描述连续性和变量部分读写指令带来的干涉信息,最大限度地复用可能的寄存器空间,对传统方法下难以分析的变量内部空间实现复用以及存在大量变量部分读写操作的程序有良好的提升效果。
S220,对子变量进行活跃性分析并构建干涉图。
通过对子变量进行活跃性分析,可获得各个子变量的活跃周期,进而构建子变量的干涉图。若两个子变量的生命期重叠或部分重叠,则这两个子变量的活跃期相互冲突或干涉,因而不能被分配在一个寄存器中。在干涉图中,节点表示程序中的子变量,与节点相交的边则表示该边两端的节点(即子变量)相互干涉。在一个实施例中,还可以基于子变量的对齐约束构建干涉图。
为了更清楚了描述变量的活跃性,在此例举一段示例性程序代码,并且以该段程序代码为基础,对程序中的变量进行活跃性分析并构建干涉图。
代码如下:
上述程序中描述了变量A、B、C以及D的访问情况,其中,变量A的长度为8bits,指令I0-I3定义并使用了A,其中,指令I0定义A[0:8bits),指令I3使用了A[3:8bits);B长度为16bits,指令I3-I5定义并使用了B,其中指令I3定义了B[3:16bits),指令I4定义了B[0:3bits),指令I5使用了B[0:16bits);C长度为3bits,指令I1-I4定义并使用了C[0:3bits);变量D的长度为8bits,指令I2-I3定义并使用了D,其中,指令I2定义了D[0:8bits),指令I3使用了D[1:8bits)。
图4示出了现有技术中未划分的原始变量的活跃期间及干涉图,其中,图4A示出了上述程序中原始变量A、B、C和D的活跃期间。如图4A所示,A的活跃期间为I0-I3;变量B的活跃期间为I3-I5;变量C的活跃期间为I1-I4;变量D的活跃期间为I2-I3。图4B示出了基于原始变量A、B、C和D的活跃期间建立干涉图。如图4B所示,变量A、C和D相互干涉,变量B和变量C相互干涉,变量B和变量A、D互不干涉。
图5示出了一个实施例中划分后子变量的活跃期间及干涉图,其中,图5A示出了将上述程序的变量划分为子变量的活跃期间。如图5A所示,依据上述程序中变量A、B、C和D的被访问情况,将变量A划分为A1[0:3bits)和A2[3:8bits),其中,A1的活跃期间为I0;A2的活跃期间为I0-I3;将变量B划分为B1[0:3bits)和B2[3:16bits),其中,B1的活跃期间为I4-I5,B2的活跃期间为I3-I5;C[0:3bits)的活跃期间为I1-I4;将变量D划分为D1[0:1bits)和D2[1:8bits),其中,D1的活跃期间为I2;D2的活跃期间为I2-I3。图5B示出了基于被划分后的子变量的活跃期间建立干涉图,其中,由于变量的对齐约束为8bits,因此可以删除了C[0:3bits)和A2[3:8bits)之间可能的干涉边。
经比较可以看出,相对于图4B,图5B中基于被划分后的子变量的活跃性所构建的干涉图,能够更加精确地描述部分读写指令所带来的干涉信息。
S230,至少基于干涉图中子变量的最大团信息确定子变量的优先度。
在传统算法中,最大团问题即是寻找在干涉图中节点数量最多的完全子图,而本发明中,最大团是指干涉图中节点所代表的变量的长度之和最大的完全子图。最大团问题和图着色问题均是NPC问题,但同一干涉图下,最大团问题的复杂度远低于图着色问题,因此本发明中倾向于通过求解最大团从而近似求解相应的图着色问题。
在一个实施例中,可以基于干涉图中所述子变量的最大团信息确定所述子变量的优先度。变量的最大团信息是指子变量是否包含在干涉图的最大团中。若子变量包含在干涉图的最大团中,则该子变量的优先度较高;若子变量不包含在干涉图的最大团中,则该子变量的优先度较低。如上所述,本发明中最大团是指干涉图中节点所代表的子变量的长度之和最大的完全子图。以图5B所示的干涉图为例,其中包括3个完全子图,即{D2,A2}、{D2,C}和{C,B2},其包含的子变量长度之和分别为12、10和16,因此{C,B2}为该干涉图中的最大团。因此,在该实施例中,子变量C和B2的优先度最高。
变量的干涉度是指在干涉图中与代表该变量的节点相交的边的数量。例如,图4B所示的干涉图中,变量A、B、C和D的干涉度分别为2,1,3以及2。又如,图5B所示的干涉图中,子变量A1、A2、B1、B2、C、D1以及D2的干涉度分别为1,2,1,2,2,1以及3。
在另一个实施例中,还可以分别计算各个子变量的干涉度,并基于子变量的最大团信息和干涉度共同确定其优先度。优先度的计算公式如下:
d(v)=δ(v)+degree(v) (1)
其中,d(v)表示子变量的优先度,degree(ν)表示子变量的干涉度。
在另一个实施例中,还可以综合考虑子变量的最大团信息、干涉度以及长度,排列出最终较优的优先度,并采用启发式方法调整子变量的优先度,从而达到较优的分配顺序,其中,优先度的计算公式如下:
d(v)=δ(v)+α×Size(v)+(1-α)×degree(v) (2)
其中,d(v)表示子变量的优先度,δ(ν)表示子变量的最大团信息,α为权重系数,Size(ν)表示子变量的长度,degree(ν)表示子变量的干涉度。
本发明中采用最大团指导的寄存器的分配方法,是由于实际应用中等规模的干涉图通常是可以在可接受的时间内求解最大团的。首先,由应用程序构建的干涉图中,最大团通常主要由全局变量构成,这使得实际最大团算法复杂度大大简化。其次,SSA结构的程序中干涉图是完美图,可以证明能够在多项式时间内可解;非SSA结构的程序干涉图无法保证算法运行的稳定性,但实践中依旧可以解决大部分中等规模问题,对于无法求解的干涉图,可以采用近似算法代替。基于最大团信息的启发式分配方法,综合考虑多种约束及干涉信息,从而大大减少寄存器使用个数。
S240,依据子变量的优先度为其分配寄存器。
在传统的图着色等方法中,主要依据变量的干涉度进行寄存器的分配。与传统方法相比,本发明中的寄存器分配方法能够节省更多的存储空间,提高寄存器的利用率。
图6示出了现有技术中主要基于未划分的原始变量的干涉度进行寄存器分配的示意图。图6是以图4中的变量的活跃性分析及相应的干涉图为基础计算变量的干涉度,进而进行寄存器的分配。如图6所示,假设对齐约束为8bits,依照变量的干涉度从大到小依次分配寄存器。具体来说,变量A的干涉度degree(A)为2,变量B的干涉度degree(B)为1,变量C的干涉度degree(C)为3,变量D的干涉度degree(D)为2,其干涉度从大到小排序为:degree(C)>degree(D),degree(A)>degree(B)。据此,先为变量C分配寄存器,由于变量C与其余变量都相互干涉,故为变量C单独分配8bits寄存空间;变量A和D的干涉度相同且相互干涉,故基于其各自长度分别单独分配8bits寄存空间;变量B的干涉度最小且与变量A和变量D均不干涉,故基于其长度,变量B可以与变量A和变量D共享16bits的寄存空间。综上,图6中变量A、B、C和D共占用24bits的寄存空间。
图7示出了主要基于划分后的子变量的干涉度进行寄存器分配的示意图。图7是以图5中的划分后的子变量的活跃性分析及相应的干涉图为基础进行寄存器的分配。如图7所示,假设对齐约束为8bits,依照划分后子变量的干涉度从大到小分配寄存器,并将具有连续性的子变量分配连续的寄存空间。具体来说,选择连续子变量中干涉度最大的进行排序,其中子变量D2的干涉度degree(D2)为3,子变量A2的干涉度degree(A2)为2,子变量C的干涉度为degree(C)为2,子变量B2的干涉度degree(B2)为2,可得degree(D2)>degree(A2)、degree(C)和degree(B2)。据此,先为变量D2分配寄存器,并且子变量D1、D2之间具有连续性,故基于其总长度为子变量D1和D2共同分配8bits寄存空间;子变量A2、C和B2的干涉度相同,但子变量A2和C与子变量D2相互干涉,且子变量A1、A2具有连续性,因此,基于子变量A1、A2的总长度为子变量A1、A2和C共同分配8bits寄存空间;子变量B2与D2互不干涉,但子变量B1、B2具有连续性,其总长度大于8bits,因此不能与子变量D2共享同一寄存空间,此外,子变量B1与子变量A1、C互不干涉,且子变量B2与A1、A2互不干涉,因此子变量B1、C可以共享3bits寄存空间,子变量B2和A2共享5bits寄存空间,以及为子变量B2另外单分配8bits寄存空间。综上,图7中变量A(A1,A2)、B(B1,B2)、C和D(D1,D2)共占用24bits的寄存空间。
然而在实际应用中,变量的最大团信息等其他因素同样影响着寄存器的分配策略和利用率。本发明采用了以最大团为指导的优先度顺序,从高到低依次为子变量分配寄存器。在一个实施例中,在分配寄存器时除了依据子变量的优先度,还可以考虑子变量的连续性信息,将具有连续性的子变量分配在连续的寄存空间内。可以按照具有连续性的若干子变量中优先度最高的子变量确定其整体的分配顺序。在一个实施例中,可以依据子变量的优先度贪心地为每个子变量分配寄存器,即按照优先度从高到低的顺序贪心地为每个子变量分配寄存器空间。在贪心策略中,变量分配的顺序极大地影响着寄存器分配的结果,因此挑选优良的分配顺序是寄存器分配任务的核心内容。
图8示出了一个实施例中依据划分后的子变量的优先度和连续性分配寄存器的示意图。图8是以图5中的划分后的子变量的活跃性分析及相应的干涉图为基础进行寄存器的分配。如上所述,图5B中划分后的变量的干涉图中,最大团为{B2,C},假设权重系数为0.5,将各个子变量的最大团信息、干涉度和长度分别代入上述公式(1)可知,子变量的优先度顺序从高到低依次为d(B2)>d(C)>d(D2)>d(A2)(由于A1、A2,B1、B2,和D1、D2之间具有连续性,故只需选取两者中优先度最高的变量进行排序)。同时,考虑到子变量之间的连续性,为具有连续的子变量A1、A2,B1、B2,和D1、D2分配连续的寄存空间。基于上述获得的子变量的优先度顺序以及连续性信息,贪心地为子变量分配寄存器。具体来说,选择子变量中优选度最高的子变量B2,并基于子变量B1、B2之间的连续性和其总长度,先为子变量B1、B2分配16bits的寄存空间;接着选择子变量中优选度次高的子变量C,并基于其长度以及与已分配的子变量B1、B2的干涉信息,使子变量C与子变量B1、B2共享3bits的寄存空间;然后选择子变量中优选度第三的子变量D2,并基于子变量D1、D2之间的连续性、总长度以及与已分配的子变量B1、B2、C的干涉信息,使子变量D1、D2与B2共享8bits的寄存空间;最后选择子变量中优选度最低的子变量A2,并基于子变量A1、A2之间的连续性、总长度以及与已分配的子变量B1、B2、C、D1、D2的干涉信息,使子变量A1、A2与B1、B2共享8bits的寄存空间。综上,图8中变量A(A1,A2)、B(B1,B2)、C和D(D1,D2)共占用16bits的寄存空间。相对应图6和图7中的分配方案,本发明中的分配方法节约了8bits的寄存空间。
从上述实施例可以看出,通过使用贪心策略,并综合考虑变量的最大团信息、干涉度、长度以及连续性信息来确定寄存器的分配顺序,并通过启发式方法不断调优达到较优的分配方案,能够实现全局性的优良分配方案,对可编程交换机上包处理程序一类的不规则寄存器分配等具有良好的适用性。
实验证明,在实际测试过程中,本发明中的分配方法相对于传统的分配方法更加接近理论最优方案。
下表为华为转发平台上的四个真实的包处理程序,其中,IR1为处理器上的测试程序,IR2,IR3和IR4均为转发程序。
图9示出了对上述四个不同的包处理程序使用不同的寄存器分配方案的结果对比示意图。其中,baseline方案主要基于未划分的原始变量的干涉度进行寄存器分配;degree方案主要基于划分后的子变量的干涉度进行寄存器分配;Maximum clique为基于最大团指导的分配方案,即本发明了中综合考虑变量的最大团信息、干涉度、长度以及连续性信息来确定寄存器的分配顺序,并通过启发式方法不断调优达到较优的分配方案;Optimal为理论最优解,由于实际样例中难以真正获取所有情况下的最优解,这里使用的是利用计算出的最大团估算出的理论下界代替。如图9所示,上述所有的方案中基于最大团指导的分配方案与理论最优解最接近。和baseline对比变量切分平均可以取得5.3%优化,最大团指导的分配算法平均可以取得2.4%优化
最后所应说明的是,以上仅用以说明本发明的技术方案而非限制。尽管对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (9)
1.一种网络处理器上寄存器的分配方法,包括:
依据原始变量的被访问情况将所述原始变量划分为若干子变量,其包括:按照最细粒度将所述原始变量划分为若干子变量;所述按照最细粒度将所述原始变量划分为若干子变量包括:将原始变量中被单独读写和/或引用的部分分别划分为一个子变量,当两个或两个以上子变量中存在重叠部分时,将重叠部分单独划分为一个子变量,其余部分也各自形成子变量;
对所述子变量进行活跃性分析并构建干涉图;
至少基于所述干涉图中所述子变量的最大团信息确定所述子变量的优先度,其包括:若子变量包含在干涉图的最大团中,则该子变量的优先度较高;若子变量不包含在干涉图的最大团中,则该子变量的优先度较低;其中,所述子变量的最大团信息是指所述子变量是否包含在最大团中,所述最大团是指所述干涉图中节点所代表的子变量的长度之和最大的完全子图;以及
依据所述优先度分配寄存器。
2.根据权利要求1所述的分配方法,还包括:
删除所述原始变量中未被访问的子变量;
记录所述子变量的连续性信息;以及
依据所述子变量的优先度和连续性信息分配寄存器。
3.根据权利要求2所述的分配方法,还包括:
计算所述干涉图中所述子变量的干涉度;以及
至少基于所述干涉图中所述子变量的最大团信息和干涉度确定所述子变量的优先度。
4.根据权利要求3所述的分配方法,还包括:
基于所述干涉图中所述子变量的最大团信息、干涉度以及长度确定所述子变量的优先度。
5.根据权利要求4所述的分配方法,其中,确定所述子变量的优先度采用下列公式:
d(v)=δ(v)+α×Size(v)+(1-α)×degree(v)
其中,d(ν)表示子变量的优先度,δ(ν)表示子变量的最大团信息,α为权重系数,Size(ν)表示子变量的长度,degree(ν)表示子变量的干涉度。
6.根据权利要求1所述的分配方法,还包括:通过启发式方法调整所述子变量的优先度。
7.根据权利要求1所述的分配方法,还包括:
记录所述子变量的对齐约束信息;以及
基于所述子变量的活跃性分析以及对齐约束信息构建所述干涉图。
8.一种存储介质,其中存储有计算机程序,在所述计算机程序被处理器执行时,能够用于实现权利要求1-7中任一项所述的方法。
9.一种电子设备,包括处理器和存储器,所述存储器中存储有计算机程序,在所述计算机程序被处理器执行时,能够用于实现权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010474445.9A CN111736899B (zh) | 2020-05-29 | 2020-05-29 | 一种网络处理器上寄存器的分配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010474445.9A CN111736899B (zh) | 2020-05-29 | 2020-05-29 | 一种网络处理器上寄存器的分配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111736899A CN111736899A (zh) | 2020-10-02 |
CN111736899B true CN111736899B (zh) | 2023-09-08 |
Family
ID=72646567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010474445.9A Active CN111736899B (zh) | 2020-05-29 | 2020-05-29 | 一种网络处理器上寄存器的分配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111736899B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113205506B (zh) * | 2021-05-17 | 2022-12-27 | 上海交通大学 | 一种电力设备全空间信息三维重构方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6853970B1 (en) * | 1999-08-20 | 2005-02-08 | Hewlett-Packard Development Company, L.P. | Automatic design of processor datapaths |
JP2009059001A (ja) * | 2007-08-29 | 2009-03-19 | Internatl Business Mach Corp <Ibm> | プログラムのコンパイルのために変数にレジスタを割り付ける技術 |
CN101710291A (zh) * | 2009-11-27 | 2010-05-19 | 中国科学院声学研究所 | 一种优化堆栈空间的寄存器分配方法 |
CN103324463A (zh) * | 2013-05-10 | 2013-09-25 | 中国人民解放军信息工程大学 | 基于区域优先级的寄存器分配方法 |
CN108491505A (zh) * | 2018-03-22 | 2018-09-04 | 中国科学院信息工程研究所 | 一种基于拓扑势值排序的dsatur图顶点着色方法 |
-
2020
- 2020-05-29 CN CN202010474445.9A patent/CN111736899B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6853970B1 (en) * | 1999-08-20 | 2005-02-08 | Hewlett-Packard Development Company, L.P. | Automatic design of processor datapaths |
JP2009059001A (ja) * | 2007-08-29 | 2009-03-19 | Internatl Business Mach Corp <Ibm> | プログラムのコンパイルのために変数にレジスタを割り付ける技術 |
CN101710291A (zh) * | 2009-11-27 | 2010-05-19 | 中国科学院声学研究所 | 一种优化堆栈空间的寄存器分配方法 |
CN103324463A (zh) * | 2013-05-10 | 2013-09-25 | 中国人民解放军信息工程大学 | 基于区域优先级的寄存器分配方法 |
CN108491505A (zh) * | 2018-03-22 | 2018-09-04 | 中国科学院信息工程研究所 | 一种基于拓扑势值排序的dsatur图顶点着色方法 |
Non-Patent Citations (1)
Title |
---|
嵌入式系统寄存器分配:启发式与进化算法;畅志艳;《中国优秀硕士学位论文全文数据库信息科技辑》;I137-30 * |
Also Published As
Publication number | Publication date |
---|---|
CN111736899A (zh) | 2020-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5733860B2 (ja) | 依存問題の効率的並列計算 | |
US5963972A (en) | Memory architecture dependent program mapping | |
EP0974898A2 (en) | A method for determining a storage-bandwidth optimized memory organization of an essentially digital device | |
US7373475B2 (en) | Methods for optimizing memory unit usage to maximize packet throughput for multi-processor multi-threaded architectures | |
JP2011527788A5 (zh) | ||
CN109522428B (zh) | 一种基于索引定位的图计算系统的外存访问方法 | |
CN114265592A (zh) | 填充指令字的系统和方法 | |
CN110196851A (zh) | 一种数据存储方法、装置、设备及存储介质 | |
CN109388486B (zh) | 一种针对异构内存与多类型应用混合部署场景的数据放置与迁移方法 | |
EP2645259A1 (en) | Method, device and system for caching data in multi-node system | |
KR20110015439A (ko) | 로컬 및 글로벌 데이터 공유 | |
KR20110097716A (ko) | 기록 마스크를 사용하는 simd 아키텍처에 의한 레지스터 할당 | |
CN111897651B (zh) | 一种基于标签的内存系统资源管理方法 | |
CN111736899B (zh) | 一种网络处理器上寄存器的分配方法 | |
CN112085644A (zh) | 多列数据排序方法、装置、可读存储介质和电子设备 | |
CN109788013B (zh) | 分布式系统中作业资源分配方法、装置及设备 | |
CN114117150A (zh) | 一种基于gpu的图分析算法通用优化方法 | |
CN112540934B (zh) | 保证多个延迟关键程序共同执行时服务质量的方法及系统 | |
JP2001282617A (ja) | 共有されたキャッシュを動的に区分するための方法及びシステム | |
CN113886090A (zh) | 内存分配方法及装置、设备、存储介质 | |
US6889275B2 (en) | Resource interconnection patterns in a customized memory organization context | |
CN110618872B (zh) | 混合内存动态调度方法及系统 | |
CN109522102B (zh) | 一种基于i/o调度的多任务外存模式图处理方法 | |
Mirsadeghi et al. | PTRAM: A parallel topology-and routing-aware mapping framework for large-scale HPC systems | |
CN114237903B (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 |