一种寄存器冲突的检测方法及装置与流程

文档序号:13290835阅读:162来源:国知局
技术领域本发明涉及网络通信技术领域,尤其涉及一种寄存器冲突的检测方法及装置。

背景技术:
现今网络发展速度惊人,网络流量的增长及新业务的出现,需要网络设备具有线速和灵活的处理能力。网络处理器凭借其高速转发性能、可靠性以及灵活的可编程性,已成为当今网络中数据处理的有效解决方案。微码是存储于网络处理器中的指令集,驻留于网络处理器的微引擎中,是整个数据转发层面的核心。寄存器是网络处理器微引擎中的重要资源,微码编程利用寄存器存储一些临时变量,根据转发逻辑实现各种业务。在微码编程中,在增加变量时要指定寄存器,每个变量都会有个生命周期(lifetime),即从开始使用该变量到该变量不再使用之间的指令周期间隔。比如微码中定义了一个变量存储报文的目的IP地址,取名destIp,存储于寄存器R1中,如果在微码中从第m行开始使用destIp,第n行使用完毕,则其生命周期为n-m,并且在第n行以后寄存器R1便释放出来,可以定义为其他变量。然而,微码编程经常出现的错误就是是寄存器冲突。所谓寄存器冲突就是使用同一寄存器的两个变量的生命周期出现重叠。因此,由于寄存器发生冲突,便导致微码业务在转发时出现错误或出现其他严重故障。

技术实现要素:
本发明要解决的问题是提供一种寄存器冲突的检测方法及装置,能够有效地统计寄存器的使用状况,有效地避免因寄存器发生冲突而引发的错误或其他故障。为了解决上述技术问题,本发明采用如下技术方案:依据本发明的一个方面,提供了一种寄存器冲突的检测方法,包括:获取微码文件,对所述微码文件进行解析,并获取所述解析结果,其中,所述解析结果包括:任一个变量存放的寄存器位置以及任一个变量的生命周期;根据所述解析结果,对存放于同一寄存器的至少一个变量的生命周期进行检测,若生命周期重叠,则输出错误提示。可选地,所述微码文件包括:变量定义区,用于为存放变量指定寄存器;微码指令区,用于添加与所述变量对应的微码指令。可选地,获取微码文件,对所述微码文件进行解析,并获取解析结果的步骤包括:获取微码文件,通过正则表达式分别与所述微码文件的变量定义区以及微码指令区进行匹配;根据匹配结果,对所述变量定义区进行解析,获取所述任一个变量存放的寄存器位置;根据匹配结果,对所述微码指令区进行解析,统计与所述任一个变量对应的微码指令在所述寄存器中占用的指令行,获取所述任一个变量的生命周期。可选地,所述任一个变量的生命周期为与所述变量对应的微码指令的开始行与结束行之间的指令周期间隔。可选地,根据所述解析结果,对存储于同一寄存器的至少一个变量的生命周期进行检测,若生命周期重叠,则输出错误提示的步骤包括:根据解析结果,获取存储于同一寄存器的至少一个变量;对所述存储于同一寄存器的至少一个变量的生命周期进行检测,若生命周期重叠,则针对生命周期重叠的变量输出错误提示。可选地,所述方法还包括:若存储于同一寄存器的至少一个变量的生命周期不重叠,则输出所述任一个变量在寄存器中分布存储的文本文件。依据本发明的另一个方面,还提供了一种寄存器冲突的检测装置,包括:解析模块,用于获取微码文件,对所述微码文件进行解析,并获取所述解析结果,其中,所述解析结果包括:任一个变量存放的寄存器位置以及任一个变量的生命周期;输出模块,用于根据所述解析结果,对存放于同一寄存器的至少一个变量的生命周期进行检测,若生命周期重叠,则输出错误提示。可选地,所述微码文件包括:变量定义区,用于为存放变量指定寄存器;微码指令区,用于添加与所述变量对应的微码指令。可选地,所述解析模块包括:匹配单元,用于获取微码文件,通过正则表达式分别与所述微码文件的变量定义区以及微码指令区进行匹配;第一解析单元,用于根据匹配结果,对所述变量定义区进行解析,获取所述任一个变量存放的寄存器位置;第二解析单元,用于根据匹配结果,对所述微码指令区进行解析,统计与所述任一个变量对应的微码指令在所述寄存器中占用的指令行,获取所述任一个变量的生命周期。可选地,所述任一个变量的生命周期为与所述变量对应的微码指令的开始行与结束行之间的指令周期间隔。可选地,所述输出模块包括:获取单元,用于根据解析结果,获取存储于同一寄存器的至少一个变量;输出单元,用于对所述存储于同一寄存器的至少一个变量的生命周期进行检测,若生命周期重叠,则针对生命周期重叠的变量输出错误提示。可选地,所述输出模块还用于若存储于同一寄存器的至少一个变量的生命周期不重叠,则输出所述任一个变量在寄存器中分布存储的文本文件。本发明的有益效果是:本发明方案中的寄存器冲突的检测装置,能够对微码文件进行解析,获取任一个变量存放的寄存器位置以及任一个变量的生命周期,然后再对存放于同一寄存器中的至少一个变量的生命周期进行检测,当检测到存在生命周期重叠时,则输出错误提示。本发明中的方案能够有效地统计出寄存器中每个变量的生命周期以及每个寄存器的存储状态,对寄存器中变量生命周期出现重叠的状况发出错误提示,尽早的避免了因寄存器发生冲突引发的错误或其他故障。附图说明图1表示本发明实施例中寄存器冲突检测方法的流程图;图2表示微码文件中变量定义区中定义变量的示意图;图3表示微码文件中微码指令区中添加指令的示意图;图4表示本发明实施例中对微码文件进行解析的流程图;图5表示本发明实施例中对生命周期进行检测的流程图;图6表示同一寄存器中两个变量生命周期冲突的示意图;图7表示同一寄存器中两个变量生命周期不冲突的示意图;图8表示寄存器中变量生命周期的统计图;图9表示本发明实施例中检测寄存器冲突的工作流程图;图10表示本发明实施例中寄存器冲突检测装置的结构框图;图11表示本发明实施例中解析模块的结构框图;图12表示本发明实施例中输出模块的结构框图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。实施例一本发明实施例公开了一种寄存器冲突的检测方法,如图1所示,方法100包括以下步骤:步骤S101、获取微码文件,对微码文件进行解析,并获取解析结果,其中,解析结果包括:任一个变量存放的寄存器位置以及任一个变量的生命周期;步骤S103、根据解析结果,对存放于同一寄存器的至少一个变量的生命周期进行检测,若生命周期重叠,则输出错误提示。具体地,在本发明实施例中,上述微码文件包括:变量定义区,用于为存放变量指定寄存器,能够按寄存器顺序依次定义变量,其具体定义方式如图2所示;微码指令区,用于添加与变量对应的微码指令,其具体添加指令方式如图3所示,其中前面数字为指令行。因此,在对微码文件进行解析时,要分别对变量定义区和微码指令区进行解析,其中,如图4所示,获取微码文件,对微码文件进行解析,并获取解析结果(步骤S101)具体包括以下步骤:步骤S1011、获取微码文件,通过正则表达式分别与微码文件的变量定义区以及微码指令区进行匹配;步骤S1013、根据匹配结果,对变量定义区进行解析,获取任一个变量存放的寄存器位置;步骤S1015、根据匹配结果,对微码指令区进行解析,统计与任一个变量对应的微码指令在寄存器中占用的指令行,获取任一个变量的生命周期。其中,任一个变量的生命周期为与变量对应的微码指令的开始行与结束行之间的指令周期间隔。具体地,如上述图3中,变量V1的生命周期为1~5,变量V5的生命周期为5~6,因此变量V1在第五条指令周期使用后结束,其占用的寄存器R0可以释放给变量V2使用。具体地,如图5所示,在本发明实施例中,根据解析结果,对存放于同一寄存器的至少一个变量的生命周期进行检测,若生命周期重叠,则输出错误提示(步骤S103)包括以下步骤:步骤S1031、根据解析结果,获取存储于同一寄存器的至少一个变量;步骤S1033、对存储于同一寄存器的至少一个变量的生命周期进行检测,若生命周期重叠,则针对生命周期重叠的变量输出错误提示。具体地,如图6所示,Vx和Vy是使用同一个寄存器的两个变量,其生命周期分别为LineA~LineB和LineC~LineD,且LineB>=LineC,则Vx和Vy使用周期重叠,二者寄存器冲突,因此,需要重新制定新的寄存器。其中,若存储于同一寄存器的至少一个变量的生命周期不重叠,则输出任一个变量在寄存器中分布存储的文本文件。具体地,如图7所示,Vx和Vy是使用同一个寄存器的两个变量,其生命周期分别为LineA~LineB和LineC~LineD,且LineB<LineC,则Vx和Vy使用周期不重叠,二者寄存器不冲突。另外,LineB和Line之间为空闲区,可供其他变量使用。进一步地,该文本文件中记录的变量分布存储情况,所有变量在寄存器中生命周期的统计图如图8所示。具体地,如图9所示,为本发明实施例中检测寄存器冲突的工作流程图,首先,通过正则表达式对微码文件的变量定义区进行匹配,匹配成功后,对变量定义区进行解析,获取任一个变量存放的寄存器位置。然后,再通过正则表达式对微码文件的微码指令区进行匹配,匹配成功后,对微码指令区进行解析,统计任一个变量对应的微码指令在寄存器中占用的指令行,其中指令执行的开始行与结束行之间的指令周期间隔即为该变量的生命周期,因此,能够获取存储于同一寄存器的变量的生命周期。最后,对存放于同一寄存器的变量的生命周期进行检测,如果生命周期重叠,则针对生命周期重叠的变量输出错误提示,如果生命周期不重叠,则输出任一个变量在寄存器中分布存储的文本文件。本发明的方案能够有效地对存储于寄存器中的变量的生命周期进行统计,对生命周期重叠的情况发出错误提示,尽早地避免了寄存器冲突问题;同时,当生命周期重叠时,还能够生成任一个变量在寄存器中分布存储的文本文件,有利于微码编程人员对寄存器的存储情况的了解,修改需要添加的变量时,通过生成文本能够很容易找到空闲的寄存器资源。实施例二本发明实施例公开了一种寄存器冲突的检测装置,具体地,如图10所示,为本发明实施例中寄存器冲突的检测装置1000的结构框图,包括:解析模块1001,用于获取微码文件,对微码文件进行解析,并获取解析结果,其中,解析结果包括:任一个变量存放的寄存器位置以及任一个变量的生命周期;输出模块1003,用于根据解析结果,对存放于同一寄存器的至少一个变量的生命周期进行检测,若生命周期重叠,则输出错误提示。具体地,在本发明实施例中,微码文件包括:变量定义区,用于为存放变量指定寄存器;微码指令区,用于添加与变量对应的微码指令。具体地,如图11所示,为本发明实施例中解析模块的结构框图,解析模块1001包括:匹配单元10011,用于获取微码文件,通过正则表达式分别与微码文件的变量定义区以及微码指令区进行匹配;第一解析单元10013,用于根据匹配结果,对变量定义区进行解析,获取任一个变量存放的寄存器位置;第二解析单元10015,用于根据匹配结果,对微码指令区进行解析,统计与任一个变量对应的微码指令在寄存器中占用的指令行,获取任一个变量的生命周期。具体地,在本发明实施例中,任一个变量的生命周期为与变量对应的微码指令的开始行与结束行之间的指令周期间隔。具体地,如图12所示,为本发明实施例中输出模块的结构框图,输出模块1003包括:获取单元10031,用于根据解析结果,获取存储于同一寄存器的至少一个变量;输出单元10033,用于对存储于同一寄存器的至少一个变量的生命周期进行检测,若生命周期重叠,则针对生命周期重叠的变量输出错误提示。具体地,输出模块1003还用于若存储于同一寄存器的至少一个变量的生命周期不重叠,则输出任一个变量在寄存器中分布存储的文本文件。以上所述的是本发明的优选实施方式,应当指出对于本技术领域的普通人员来说,在不脱离本发明所述的原理前提下还可以作出若干改进和润饰,这些改进和润饰也在本发明的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1