CN104572029B - 一种状态机可拼接性和拼接规则判定方法和装置 - Google Patents

一种状态机可拼接性和拼接规则判定方法和装置 Download PDF

Info

Publication number
CN104572029B
CN104572029B CN201410836240.5A CN201410836240A CN104572029B CN 104572029 B CN104572029 B CN 104572029B CN 201410836240 A CN201410836240 A CN 201410836240A CN 104572029 B CN104572029 B CN 104572029B
Authority
CN
China
Prior art keywords
block
status
sub
state
length
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
Application number
CN201410836240.5A
Other languages
English (en)
Other versions
CN104572029A (zh
Inventor
王磊
杨磊
谢少林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Silang Technology Co ltd
Original Assignee
Institute of Automation of Chinese Academy of Science
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Automation of Chinese Academy of Science filed Critical Institute of Automation of Chinese Academy of Science
Priority to CN201410836240.5A priority Critical patent/CN104572029B/zh
Publication of CN104572029A publication Critical patent/CN104572029A/zh
Priority to PCT/CN2015/094443 priority patent/WO2016101725A1/zh
Application granted granted Critical
Publication of CN104572029B publication Critical patent/CN104572029B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种状态机拼接规则判定方法,以及基于该方法的状态机判定装置。本方法均以状态块为判定对象,对于两个或多个状态块,判断它们是否具有可拼接性,以及拼接生成的复合状态块的类型,生成复合状态块的类型包括含有嵌套循环块的全循环块类型、非全顺序块类型、全顺序块类型、全循环块类型和全嵌套循环块类型。本发明的方法能够保证状态机拼接过程正确和高效地进行,本发明的装置作为合并状态机的重要子装置,更加方便拼接装置的调试和修改,以及功能的移植和增加。

Description

一种状态机可拼接性和拼接规则判定方法和装置
技术领域
本发明涉及数字集成电路领域,更具体地涉及一种状态机可拼接性和拼接规则判定方法和装置。
背景技术
动态可重配流水线技术使得硬件电路结构更加灵活可控,其本质是用程序描述流水线上各个状态机的行为。状态机对应于电路中各个功能单元,通过编程设计和配置状态机可以方便的操控硬件资源。然后,电路较为复杂时,状态机的设计和配置就变得极其复杂。
然而,当硬件需要执行较为复杂的操作或实现较为复杂的算法时,不同状态机的行为会变得复杂而多样,此时状态机拼接的情况就会极为复杂,可能面临不同类型状态机难以拼接、甚至不能拼接的情况。此时,如何从理论上分析状态机的可拼接性,识别出可以直接拼接、或者经过等价变换即可拼接的类型,以及提示不能拼接的状态机类型,就变得很关键。
发明内容
有鉴于此,本发明的主要目的在于提出一种状态机等价变换判定方法,从理论上系统全面地分析拼接过程中状态块的可拼接性,并且分析各种情况状态块的拼接规则和等价变换规则,以便于应对各种状态机拼接情况。
为了实现上述目的,作为本发明的一个方面,本发明提供了一种状态机可拼接性和拼接规则判定方法,包括以下步骤:
步骤1,进行初始化,将当前状态置为空状态;
步骤2,从待拼接状态块队列中读取一个状态块,根据该状态块的类型和当前状态判断该状态的处理方法,修改当前状态,并跳转到相应规则的步骤中;
步骤3,判断全顺序块的拼接规则,保持当前状态为全顺序状态,跳至步骤2;
步骤4,判断全循环块的拼接规则,保持当前状态为全循环状态,且读入的状态块为循环块,调用步骤6进行长度比较:
若步骤6返回长度相同,且比较的左右循环块循环次数相同,则保持当前状态为全循环状态,跳至步骤2;
若步骤6返回长度相同,且比较的左右循环块循环次数不同,则输出等价变换规则,方法结束;
若步骤6返回结果不同信息,则输出不可拼接,该方法结束;
步骤5,判断全嵌套循环块的拼接规则,保持当前状态为全嵌套循环状态,且读入的状态块为嵌套循环块,调用步骤6进行长度比较:
若步骤6返回长度相同,且比较的左右嵌套循环块循环次数相同,则保持当前状态为全嵌套循环状态,跳至步骤2;
若步骤6返回长度相同,且比较的左右嵌套循环块循环次数不同,则输出等价变换规则,方法结束;
若步骤6返回长度不同,则输出不可拼接,该方法结束;
步骤6,确定输入的两个循环块或两个嵌套循环块长度是否一致。
其中,步骤2中所述根据该状态块的类型和当前状态判断该状态的处理方法,修改当前状态,并跳转到相应规则的步骤中的步骤包括:
若当前状态为空状态:
若读取的状态块为顺序块,置当前状态为全顺序状态,重新开始步骤2;
若该状态块为循环块,置当前状态为全循环状态,记录当前循环块的循环长度,重新开始步骤2;
若该状态块为嵌套循环块,置当前状态为全嵌套循环状态,记录当前循环块的循环长度,重新开始步骤2;
若当前状态为全顺序状态:
若读取的状态块为顺序块,则跳转到步骤3;
若读取的状态块为循环块或嵌套循环块,则修改当前状态为非全顺序状态,输出等价变换规则,该方法结束;
若当前状态为全循环状态:
若读取的状态块为循环块,则跳转到步骤4;
若读取的状态块为顺序块,则修改当前状态为非全顺序状态,输出等价变换规则,该方法结束;
若读取的状态块为嵌套循环块,则修改当前状态为非全循环状态,输出等价变换规则,该方法结束;
若当前状态为全嵌套循环状态:
若读取的状态块为嵌套循环块,则跳转到步骤5;
若读取的状态块为顺序块,则修改当前状态为非全顺序状态,输出等价变换规则,该方法结束;
若读取的状态块为循环块,则修改当前状态为非全循环状态,输出等价变换规则,该方法结束;
若读取待判定状态块队列为空,且当前状态为全顺序状态、全循环状态或全嵌套循环状态,则输出可拼接规则,该方法结束。
其中,步骤6中所述长度与循环体长度、总循环次数和已循环次数相关,表示为:长度=循环体长度×(总循环次数-已循环次数)。
其中,步骤6中所述确定输入的两个循环块或两个嵌套循环块长度是否一致的步骤包括:
子步骤6.0,将输入的两个待比较状态块标记为一个左状态块,一个右状态块,作为比较步骤的左输入和右输入;
子步骤6.1,输出输入循环体的嵌套重数;若循环体是非嵌套的,则输出1;若是嵌套循环块,则将嵌套循环块内的除顺序块外的所有状态块放入步骤6.1的输入中,执行步骤6.1,从步骤6.1的输出中选出最大的值,输出最大值加1;
子步骤6.2,首先取出左状态块和右状态块嵌套循环块内的所有状态块构成左右两个状态块的有序队列,然后将两个队列中的每一个状态块分别输入到子步骤6.3的输入中,跳转到子步骤6.3,将子步骤6.3返回的状态块队列替换左右两个状态块有序队列中的原状态块,最后将左右两个状态块有序队列放入子步骤6.4的输入中,跳转到子步骤6.4;
子步骤6.3,将具有头区域、主体和尾区域的树形结构的状态块,降维成无头区域和尾区域的状态块;
子步骤6.4,若左有序队列不为空,则判断左有序队列的首个状态块的类型,若是顺序块,则将顺序块中的状态数累加到左状态机长度中,若是循环块,则将左循环块信息和右有序队列放入子步骤6.5的输入中,跳转到子步骤6.5,若是嵌套循环块,则该步骤返回长度相同;将左有序队列首个状态块删除,跳转至子步骤6.4;若左有序队列为空,则将右有序队列放入子步骤6.7的输入中,跳转至子步骤6.7;
子步骤6.5,若右有序队列不为空,则判断右有序队列的首个状态块的类型,若是顺序块,则将顺序块中的状态数累加到右状态机长度中,从右有序队列中删除首个状态块,并跳至子步骤6.5;若是循环块,判断输入左循环块信息中总循环次数和右循环块的总循环次数和循环块内状态个数是否一致,若一致则跳至子步骤6.6,若不一致则该步骤返回长度不同;若是嵌套循环块则该步骤返回长度相同;若右有序队列为空,则该步骤返回长度不同;
子步骤6.6,若有序队列不为空,则判断右有序队列的首个状态块的类型,若是顺序块,则将顺序块中的状态数累加到右状态机长度中,从右有序队列中删除首个状态块,并跳至子步骤6.7;若是循环块或嵌套循环块,则该步骤返回长度不同。若有序队列为空则跳至子步骤6.8;
子步骤6.7,将总循环次数和循环块内状态个数相同,但已循环次数不等的左右循环块做相等补偿;从左右有序队列中删除首个状态块,并跳至子步骤6.4;
子步骤6.8,判断此时左状态机长度和右状态机长度是否相等,若相等,则该步骤返回长度相同,若不相等,则该步骤返回长度不同。
其中,子步骤6.3中所述将具有头区域、主体和尾区域的树形结构的状态块,降维成无头区域和尾区域的状态块的步骤包括:
首先若输入的状态块存在头区域则将头区域中的每个状态块放入子步骤6.3的输入中,调用子步骤6.3,将子步骤6.3返回的有序队列放入输出的有序队列中,然后将主体状态块放入输出有序队列,最后输入的状态块存在尾区域则将尾区域中的每个状态块放入子步骤6.3的输入中,调用子步骤6.3,将子步骤6.3返回的有序队列放入输出的有序队列中。
其中,子步骤6.7中所述将总循环次数和循环块内状态个数相同,但已循环次数不等的左右循环块做相等补偿的步骤包括:判断左右已循环次数的大小,将(|左已循环次数-右已循环次数|×循环块内状态个数)累加到已循环次数较小的状态机长度上。
作为本发明的另一个方面,本发明还提供了一种状态机可拼接性和拼接规则的判定装置,包括:当前状态块寄存器2、状态块分类模块3、全顺序块处理模块4、全循环块处理模块5、全嵌套循环块处理模块6、长度计算模块8和系统状态寄存器7,其中
所述判定装置每次从待判定状态块队列1中读取一个状态块,所述当前状态块寄存器2存储刚刚读入的状态块;
所述状态块分类模块3读取所述当前状态块寄存器2和所述系统状态寄存器7的值,并根据当前状态块类型和系统状态类型从所述全顺序块处理模块4、全循环块处理模块5、全嵌套循环块处理模块6中选择相应模块进行下一步处理和判定;
所述全顺序块处理模块4从所述状态块分类模块3中读取当前状态块,并将当前顺序块状态保存至所述系统状态寄存器7中,然后使所述判定装置重新读取状态块;若读取结束则输出可拼接判断11;
所述全循环块处理模块5从所述状态块分类模块(3)中读取当前状态块,并读取所述系统状态寄存器7,然后调用所述长度计算模块(8)进行长度计算;判断完毕后根据判断结果输出相应判断规则或返回使所述判定装置继续读取状态块;
所述全嵌套循环块处理模块6从所述状态块分类模块3中读取当前状态块,并读取所述系统状态寄存器7,然后调用所述长度计算模块8进行长度计算;判断完毕后根据判断结果输出相应判断规则或返回使所述判定装置继续读取状态块;
所述系统状态寄存器7存储当前系统状态,包括状态块的分类,并存储之前读取的状态块的信息;以及
所述长度计算模块8由所述全循环处理模块5或所述全嵌套循环块处理模块6调用,用于分析和比较循环体的绝对长度并作出循环体相关的可拼接性判断。
其中,所述判定装置输出3种结果,分别是等价变换规则9、不可拼接判断10和可拼接判断11,其中所述等价变换规则9表示当前状态块不能直接拼接,但经过等价变换后可能进行拼接,所述不可拼接判断10表示当前状态块不可拼接,所述可拼接判断11表示当前状态块可直接拼接。
其中,所述待判定状态块队列1为待拼接状态机分解得到的状态块,分为顺序块、循环块、嵌套循环块3种。
其中,所述长度计算模块8进行长度计算的公式为:长度=循环体长度×(总循环次数-已循环次数)。
基于上述技术方案可知,本发明的方法对状态机拼接过程中的待拼接状态块进行分析,在理论上分析了状态机的状态块的各种类型及其拼接的可能性,能够提高拼接的清晰性和拼接效率,以便于状态机拼接过程能够正确和高效地进行。本发明的方法将待拼接的状态块分为顺序块、循环块、嵌套循环块3类,并针对不同拼接类型分别进行等价性计算,可以作为状态机拼接方法过程中一个可以极大提升拼接效率和正确性的中间过程。此外,该等价性分析方法还可以应用在其他类似的状态机分析过程中。本发明的装置作为合并状态机的重要子装置,使得状态机拼接装置具有模块化的特点,更加方便拼接装置的调试和修改,以及功能的移植和增加。
附图说明
图1是本发明的状态机可拼接性和拼接规则判定装置的结构示意图;
图2是本发明的实施例1的待判定状态块的示意图;
图3是本发明的实施例2的待判定状态块的示意图;
图4是本发明的状态机可拼接性和拼接规则判定方法的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。
本发明公开了一种状态机可拼接性和拼接规则判定方法和一种状态机可拼接性和拼接规则判定装置。其中,本发明的状态机可拼接性和拼接规则判定方法,包括以下步骤:初始化步骤、状态块分类步骤、全顺序块处理步骤、全循环块处理步骤、全嵌套循环块处理步骤和长度计算步骤。下面分别进行详述之。
1.初始化步骤
该步骤用于初始化状态机可拼接性和拼接规则判定方法。该方法用当前状态记录拼接类型。该步骤的特征是:开始时先将当前状态置为空状态。
2.状态块分类步骤
该步骤的特征是:从待拼接状态块队列中读取一个状态块,根据该状态块的类型和当前状态判断该状态的处理方法,修改当前状态,并跳转到相应规则的步骤中。
若当前状态为空状态:若读取的状态块为顺序块,置当前状态为全顺序状态,重新开始步骤2;若该状态块为循环块,置当前状态为全循环状态,记录当前循环块的循环长度,重新开始步骤2;若该状态为嵌套循环块,置当前状态为全嵌套循环状态,记录当前循环块的循环长度,重新开始步骤2。
若当前状态为全顺序状态:若读取的状态块为顺序块,则跳转到步骤3;若读取的状态块为循环块或嵌套循环块,则修改当前状态为非全顺序状态,输出等价变换规则,该方法结束。
若当前状态为全循环状态:若读取的状态块为循环块,则跳转到步骤4;若读取的状态块为顺序块,则修改当前状态为非全顺序状态,输出等价变换规则,该方法结束;若读取的状态块为嵌套循环块,则修改当前状态为非全循环状态,输出等价变换规则,该方法结束。
若当前状态为全嵌套循环状态:若读取的状态块为嵌套循环块,则跳转到步骤5;若读取的状态块为顺序块,则修改当前状态为非全顺序状态,输出等价变换规则,该方法结束;若读取的状态块为循环块,则修改当前状态为非全循环状态,输出等价变换规则,该方法结束。
若读取待判定状态块队列为空,且当前状态为全顺序状态、全循环状态、或全嵌套循环状态,则输出可拼接规则,该方法结束。
3.全顺序块处理步骤
该步骤判断全顺序块的拼接规则。该步骤的特征在于:该方法的当前状态为全顺序状态,且读入的状态块为顺序块。所有的顺序块在状态块拼接过程中都可以直接拼接。保持当前状态为全顺序状态,跳至步骤2。
4.全循环块处理步骤
该步骤判断全循环块的拼接规则。该步骤的特征在于:当前状态为全循环状态,且读入的状态块为循环块。
调用步骤6进行长度比较。
若步骤6返回长度相同,且比较的左右循环块循环次数相同,则保持当前状态为全循环状态,跳至步骤2。
若步骤6返回长度相同,且比较的左右循环块循环次数不同,则输出等价变换规则,方法结束。
若步骤6返回结果不同信息,则输出不可拼接,该方法结束。
5.全嵌套循环块处理步骤
该步骤判断全嵌套循环块的拼接规则。该步骤的特征在于:当前状态为全嵌套循环状态,且读入的状态块为嵌套循环块。调用步骤6进行长度计算。
若步骤6返回长度相同,且比较的左右嵌套循环块循环次数相同,则保持当前状态为全嵌套循环状态,跳至步骤2。
若步骤6返回长度相同,且比较的左右嵌套循环块循环次数不同,则输出等价变换规则,方法结束。
若步骤6返回长度不同,则输出不可拼接,该方法结束。
6.长度比较步骤
该步骤用于确定输入的两个循环块或两个嵌套循环块长度是否一致。其中长度与循环体长度、总循环次数和已循环次数相关,可表示为:长度=循环体长度×(总循环次数-已循环次数)。其比较步骤包括:比较输入子步骤、循环嵌套层次检测子步骤、嵌套循环拆解子步骤、状态结构一维化子步骤、左有序队列扫描子步骤、右有序队列扫描子步骤、右有序队列后扫描子步骤、循环块差值补偿子步骤、状态机长度判断子步骤。
子步骤6.0比较输入子步骤
该子步骤特征在于将输入的两个待比较状态块标记为一个左状态块,一个右状态块,作为比较步骤的左输入和右输入。
子步骤6.1循环嵌套层次检测子步骤
该子步骤特征在于输出输入循环体的嵌套重数。若循环体是非嵌套的,则输出1;若是嵌套循环块,则将嵌套循环块内的除顺序块外的所有状态块放入步骤6.1的输入中,执行步骤6.1,从步骤6.1的输出中选出最大的值,输出最大值加1。
子步骤6.2嵌套循环拆解子步骤
该子步骤特征在于首先取出左状态块和右状态块嵌套循环块内的所有状态块构成左右两个状态块的有序队列,然后将两个队列中的每一个状态块分别输入到子步骤6.3的输入中,跳转到子步骤6.3,将子步骤6.3返回的状态块队列替换左右两个状态块有序队列中的原状态块。最后将左右两个状态块有序队列放入子步骤6.4的输入中,跳转到子步骤6.4。
子步骤6.3状态结构一维化子步骤
该子步骤用于将具有头区域、主体和尾区域的树形结构的状态块,降维成无头区域和尾区域的状态块。其特征在于首先若输入的状态块存在头区域则将头区域中的每个状态块放入子步骤6.3的输入中,调用子步骤6.3,将子步骤6.3返回的有序队列放入输出的有序队列中,然后将主体状态块放入输出有序队列,最后输入的状态块存在尾区域则将尾区域中的每个状态块放入子步骤6.3的输入中,调用子步骤6.3,将子步骤6.3返回的有序队列放入输出的有序队列中。
子步骤6.4左有序队列扫描子步骤
该子步骤特征在于若左有序队列不为空,则判断左有序队列的首个状态块的类型,若是顺序块,则将顺序块中的状态数累加到左状态机长度中,若是循环块,则将左循环块信息和右有序队列放入子步骤6.5的输入中,跳转到子步骤6.5,若是嵌套循环块,则该步骤返回长度相同。将左有序队列首个状态块删除,跳转至子步骤6.4。若左有序队列为空,则将右有序队列放入子步骤6.7的输入中,跳转至子步骤6.7。
子步骤6.5右有序队列扫描子步骤
该子步骤特征在于若右有序队列不为空,则判断右有序队列的首个状态块的类型,若是顺序块,则将顺序块中的状态数累加到右状态机长度中,从右有序队列中删除首个状态块,并跳至子步骤6.5;若是循环块,判断输入左循环块信息中总循环次数和右循环块的总循环次数和循环块内状态个数是否一致,若一致则跳至子步骤6.6,若不一致则该步骤返回长度不同。若是嵌套循环块则该步骤返回长度相同。若右有序队列为空,则该步骤返回长度不同。
子步骤6.6右有序队列后扫描子步骤
该子步骤特征在于若有序队列不为空,则判断右有序队列的首个状态块的类型,若是顺序块,则将顺序块中的状态数累加到右状态机长度中,从右有序队列中删除首个状态块,并跳至子步骤6.7;若是循环块或嵌套循环块,则该步骤返回长度不同。若有序队列为空则跳至子步骤6.8。
子步骤6.7循环块差值补偿子步骤
该子步骤用于将总循环次数和循环块内状态个数相同,但已循环次数不等的左右循环块做相等补偿,其特征在于,判断左右已循环次数的大小,将(|左已循环次数-右已循环次数|×循环块内状态个数)累加到已循环次数较小的状态机长度上。从左右有序队列中删除首个状态块,并跳至子步骤6.4。
子步骤6.8状态机长度判断子步骤
其特征在于判断此时左状态机长度和右状态机长度是否相等,若相等,则该步骤返回长度相同,若不相等,则该步骤返回长度不同。
状态机可拼接性和拼接规则判定装置
本发明的状态机可拼接性和拼接规则判定装置(以下简称状态机判定装置)如图1所示。装置包括当前状态块寄存器2、状态块分类模块3、全顺序块处理模块4、全循环块处理模块5、全嵌套循环块处理模块6、长度计算模块8、系统状态寄存器7。装置的输入为待判定状态块队列1。装置输出3种结果,分别是等价变换规则9、不可拼接判断10和可拼接判断11。
该装置每次从待判定状态块队列1中读取一个状态块,经过状态机可拼接性和拼接规则判定方法判定后读取下一个状态块,直至输出3种判定结果中的一种。
待判定状态块队列1为待拼接状态机分解得到的状态块,它分为顺序块、循环块、嵌套循环块3种。
当前状态块寄存器2存储刚刚读入的状态块,每次读取状态块队列中的最外面的值并寄存用于其他模块。
状态块分类模块3实现了该方法中的步骤2状态块分类步骤。该模块读取当前状态块寄存器2和系统状态寄存器7的值,并根据当前状态块类型和系统状态类型从模块4、5、6中选择相应模块进行下一步处理和判定。
全顺序块处理模块4实现了该方法中的步骤3全顺序块处理步骤。该模块工作时从模块3读取当前状态块,并将当前顺序块状态保存至模块7系统状态寄存器中,然后使装置重新读取状态块。若读取结束则输出可拼接判断11。
全循环块处理模块5实现了该方法中的步骤4全循环块处理步骤。该模块工作时从模块3读取当前状态块,并读取模块7系统状态寄存器,然后调用模块8进行长度计算。判断完毕后根据判断结果输出相应判断规则或返回使装置继续读取状态块。
全嵌套循环块处理模块6实现了该方法中的步骤5全嵌套循环块处理步骤。该模块工作时从模块3读取当前状态块,并读取模块7系统状态寄存器,然后调用模块8进行长度计算。判断完毕后根据判断结果输出相应判断规则或返回使装置继续读取状态块。
系统状态寄存器7存储当前系统状态,包括状态块的分类,如全顺序块状态、全循环块状态、全嵌套循环块状态,并存储之前读取的状态块的信息,包括循环体绝对长度等。该模块信息可由模块4、5、6读取,并输出给模块3。该寄存器的值由模块3、4、5、6进行修改。
长度计算模块8实现了该方法中的步骤6长度计算步骤。该模块由模块5全循环处理模块或者模块6全嵌套循环处理模块调用,用于分析和比较循环体的绝对长度并作出循环体相关的可拼接性判断。该方法可输出3中判定结果中的某一种。
输出9、10、11是该装置输出的3中判定输出结果。其中输出9表示当前状态块不能直接拼接,但经过等价变换后可能进行拼接;输出10表示当前状态块不可拼接;输出11表示当前状态块可直接拼接。
下面通过具体实施例对本发明做进一步的阐述。
实施例一:
如图2所示的两个循环状态块,判断其可拼接性和拼接规则。
第一步:步骤1初始化步骤
初始化,将当前状态置为空状态。
第二步:步骤2状态块分类步骤
读取状态块1,当前系统状态为空状态,状态块1为循环块,置当期状态为全循环状态,重新开始步骤2。
第三步:步骤2状态块分类步骤
读取状态块2,当前系统状态为全循环状态,状态块2为循环块,跳转到步骤4。
第四步:步骤4全循环块处理步骤
该步骤判断全循环块的拼接规则。调用步骤6进行长度比较。
第五步:步骤6长度比较步骤
子步骤6.0比较输入子步骤
将状态块1标记为左状态块,状态块2标记为右状态块。
子步骤6.1循环嵌套层次检测子步骤
检测左状态块和右状态块都是非嵌套的,输出1。
子步骤6.2嵌套循环拆解子步骤
由于左状态块和右状态块均为非嵌套循环,该步骤结束后左右状态块不变,跳转到子步骤6.4。
子步骤6.4左有序队列扫描子步骤
左状态块为顺序块,将左循环块信息和右循环块队列放入子步骤6.5的输入中,跳转到子步骤6.5。
子步骤6.5右有序队列扫描子步骤
右循环块为循环块,判断左循环块信息和右循环块信息,两个循环块长度一致,均为3;循环次数一致,均为10。跳至子步骤6.6。
子步骤6.6循环块差值补偿子步骤
(|左已循环次数-右已循环次数|×循环块内状态个数)=0,从左右有序队列中删除首个状态块,并跳至子步骤6.4。
子步骤6.4左有序队列扫描子步骤
左有序队列为空,将右有序队列放入子步骤6.7的输入中,跳转至子步骤6.7。
子步骤6.7右有序队列后扫描子步骤
右有序队列为空,跳至子步骤6.8。
子步骤6.8状态机长度判断子步骤
经过判断,左状态机长度和右状态机长度相等,向步骤4返回长度相同。
第六步:步骤4全循环块处理步骤
该步骤接收到长度比较步骤返回的长度相同信息。比较左右循环块的循环次数,两个循环块循环次数均为10,循环次数相同,保持当前状态为全循环状态,跳至步骤2。
第七步:步骤2状态块分类步骤
状态块队列中的状态块1和状态块2被读取之后,待判定队列为空,没有未读取状态块,当前状态为全循环状态,输出可拼接规则,该方法结束。
实施例二:
如图3所示的两个嵌套循环状态块,判断其可拼接性和拼接规则。
第一步:步骤1初始化步骤
初始化,将当前状态置为空状态。
第二步:步骤2状态块分类步骤
读取状态块1,当前系统状态为空状态,状态块1为嵌套循环块,置当期状态为全嵌套循环状态,重新开始步骡2。
第三步:步骤2状态块分类步骤
读取状态块2,当前系统状态为全嵌套循环状态,状态块2为嵌套循环块,跳转到步骤5。
第四步:步骤5全嵌套循环块处理步骤
该步骤判断全嵌套循环块的拼接规则。调用步骤6进行长度比较。
第五步:步骤6长度比较步骤
子步骤6.0比较输入子步骤
将状态块1标记为左状态块,状态块2标记为右状态块。
子步骤6.1循环嵌套层次检测子步骤
对于左状态块进行判断,左状态块是嵌套循环块,将内部的循环状态块放入子步骤6.1输入中。再次执行子步骤6.1,这个循环块是非嵌套的,输出1。返回调用的步骤6.1,递归调用结束,输出2。
对右状态块进行判断,右状态块是嵌套循环块,将内部的循环状态块放入子步骤6.1输入中。再次执行子步骤6.1,这个循环块是非嵌套的,输出1。返回调用的步骤6.1,递归调用结束,输出2。
子步骤6.2嵌套循环拆解子步骤
将左状态块拆解为1个顺序块、一个循环块放入左有序队列中,右状态块拆解为1个循环块、一个顺序块放入右有序队列中,将两个队列中每一个状态块分别输入到子步骤6.3的输入中,跳转到子步骤6.3。
子步骤6.3状态结构一维化子步骤
该子步骤经过递归调用,输出左右两个有序队列,左有序队列按顺序依次是一个顺序块和一个循环块,右有序队列按顺序依次是一个循环块和一个顺序块。返回子步骤6.2。
子步骤6.2嵌套循环拆解子步骤
调用子步骤6.3结束,将左右两个状态块有序队列放入子步骤6.4的输入中,跳转到子步骤6.4。
子步骤6.4左有序队列扫描子步骤
左有序队列不为空,则判断左有序队列的首个状态块的类型为顺序块,将顺序块中的状态数1累加到左状态机长度中。将左有序队列首个状态块删除,跳转至子步骤6.4。
子步骤6.4左有序队列扫描子步骤
左有序队列不为空,则判断左有序队列的首个状态块的类型为循环块,将左循环块信息和右有序队列放入子步骤6.5的输入中,跳转到子步骤6.5。
子步骤6.5右有序队列扫描子步骤
判断右有序队列的首个状态块的类型为循环块,判断输入左循环块信息中总循环次数和右循环块的总循环次数和循环块内状态个数是否一致,其中左循环块总循环次数为5,循环体内状态个数为2;右循环块总循环次数为5,循环体内状态个数为2。两个循环体总循环次数和循环块内状态个数均一致。跳转至子步骤6.6。
子步骤6.6循环块差值补偿子步骤
(|左已循环次数-右已循环次数|×循环块内状态个数)=0,从左右有序队列中删除首个状态块,并跳至子步骤6.4。
子步骤6.4左有序队列扫描子步骤
左有序队列为空,则将右有序队列放入子步骤6.7的输入中,跳转至子步骤6.7。
子步骤6.7右有序队列后扫描子步骤
右有序队列不为空,则判断右有序队列的首个状态块的类型为顺序块,将顺序块中的状态数1累加到右状态机长度中,从右有序队列中删除首个状态块,并跳至子步骤6.7。
子步骤6.7右有序队列后扫描子步骤
右有序队列为空,跳至子步骤6.8。
子步骤6.8状态机长度判断子步骤
左右状态机长度均为累加值1,长度相等,向步骤5返回长度相同。
第六步:步骤5全循环块处理步骤
该步骤接收到长度比较步骤返回的长度相同信息。比较左右嵌套循环块的循环次数,两个嵌套循环块循环次数均为10,循环次数相同,保持当前状态为全嵌套循环状态,跳至步骤2。
第七步:步骤2状态块分类步骤
状态块队列中的状态块1和状态块2被读取之后,待判定队列为空,没有未读取状态块,当前状态为全嵌套循环状态,输出可拼接规则,该方法结束。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种状态机可拼接性和拼接规则判定方法,包括以下步骤:
步骤1,进行初始化,将当前状态置为空状态;
步骤2,从待判断状态块队列中读取一个状态块,根据该状态块的类型和当前状态判断该状态的处理方法,修改当前状态,并跳转到相应规则的步骤中;
步骤3,判断全顺序块的拼接规则,保持当前状态为全顺序状态,跳至步骤2;
步骤4,判断全循环块的拼接规则,保持当前状态为全循环状态,且读入的状态块为循环块,调用步骤6进行长度比较:
若步骤6返回长度相同,且比较的左右循环块循环次数相同,则保持当前状态为全循环状态,跳至步骤2;
若步骤6返回长度相同,且比较的左右循环块循环次数不同,则输出等价变换规则,方法结束;
若步骤6返回长度不一致,则输出不可拼接,该方法结束;
步骤5,判断全嵌套循环块的拼接规则,保持当前状态为全嵌套循环状态,且读入的状态块为嵌套循环块,调用步骤6进行长度比较:
若步骤6返回长度相同,且比较的左右嵌套循环块循环次数相同,则保持当前状态为全嵌套循环状态,跳至步骤2;
若步骤6返回长度相同,且比较的左右嵌套循环块循环次数不同,则输出等价变换规则,方法结束;
若步骤6返回长度不同,则输出不可拼接,该方法结束;
步骤6,确定输入的两个循环块或两个嵌套循环块长度是否一致。
2.根据权利要求1所述的状态机可拼接性和拼接规则判定方法,其中步骤2中所述根据该状态块的类型和当前状态判断该状态的处理方法,修改当前状态,并跳转到相应规则的步骤中的步骤包括:
若当前状态为空状态:
若读取的状态块为顺序块,置当前状态为全顺序状态,重新开始步骤2:
若该状态块为循环块,置当前状态为全循环状态,记录当前循环块的循环长度,重新开始步骤2;
若该状态块为嵌套循环块,置当前状态为全嵌套循环状态,记录当前循环块的循环长度,重新开始步骤2;
若当前状态为全顺序状态:
若读取的状态块为顺序块,则跳转到步骤3;
若读取的状态块为循环块或嵌套循环块,则修改当前状态为非全顺序状态,输出等价变换规则,该方法结束;
若当前状态为全循环状态:
若读取的状态块为循环块,则跳转到步骤4;
若读取的状态块为顺序块,则修改当前状态为非全顺序状态,输出等价变换规则,该方法结束;
若读取的状态块为嵌套循环块,则修改当前状态为非全循环状态,输出等价变换规则,该方法结束;
若当前状态为全嵌套循环状态:
若读取的状态块为嵌套循环块,则跳转到步骤5;
若读取的状态块为顺序块,则修改当前状态为非全顺序状态,输出等价变换规则,该方法结束;
若读取的状态块为循环块,则修改当前状态为非全循环状态,输出等价变换规则,该方法结束;
若读取待判定状态块队列为空,且当前状态为全顺序状态、全循环状态或全嵌套循环状态,则输出可拼接规则,该方法结束。
3.根据权利要求1所述的状态机可拼接性和拼接规则判定方法,其中步骤6中所述长度与循环体的循环长度、总循环次数和已循环次数相关,表示为:长度=循环体的循环长度×(总循环次数-已循环次数)。
4.根据权利要求1所述的状态机可拼接性和拼接规则判定方法,其中步骤6中所述确定输入的两个循环块或两个嵌套循环块长度是否一致的步骤包括:
子步骤6.0,将输入的两个待比较状态块标记为一个左状态块,一个右状态块,作为比较步骤的左输入和右输入;
子步骤6.1,输出输入循环体的嵌套重数;若循环体是非嵌套的,则输出1;若是嵌套循环块,则将嵌套循环块内的除顺序块外的所有状态块放入子步骤6.1的输入中,执行子步骤6.1,从子步骤6.1的输出中选出最大的值,输出最大值加1;
子步骤6.2,首先取出左状态块和右状态块嵌套循环块内的所有状态块构成左右两个状态块的有序队列,然后将两个队列中的每一个状态块分别输入到子步骤6.3的输入中,跳转到子步骤6.3,将子步骤6.3返回的状态块队列替换左右两个状态块有序队列中的原状态块,最后将左右两个状态块有序队列放入子步骤6.4的输入中,跳转到子步骤6.4;
子步骤6.3,将具有头区域、主体和尾区域的树形结构的状态块,降维成无头区域和尾区域的状态块;
子步骤6.4,若左有序队列不为空,则判断左有序队列的首个状态块的类型,若是顺序块,则将顺序块中的状态数累加到左状态机长度中,若是循环块,则将左循环块信息和右有序队列放入子步骤6.5的输入中,跳转到子步骤6.5,若是嵌套循环块,则该子步骤6.4返回长度相同;将左有序队列首个状态块删除,跳转至子步骤6.4;若左有序队列为空,则将右有序队列放入子步骤6.7的输入中,跳转至子步骤6.7;
子步骤6.5,若右有序队列不为空,则判断右有序队列的首个状态块的类型,若是顺序块,则将顺序块中的状态数累加到右状态机长度中,从右有序队列中删除首个状态块,并跳至子步骤6.5;若是循环块,判断输入左循环块信息中总循环次数和右循环块的总循环次数和循环块内状态个数是否一致,若一致则跳至子步骤6.6,若不一致则该子步骤6.5返回长度不同;若是嵌套循环块则该子步骤6.5返回长度相同;若右有序队列为空,则该子步骤6.5返回长度不同;
子步骤6.6,若有序队列不为空,则判断右有序队列的首个状态块的类型,若是顺序块,则将顺序块中的状态数累加到右状态机长度中,从右有序队列中删除首个状态块,并跳至子步骤6.7;若是循环块或嵌套循环块,则该子步骤6.6返回长度不同。若有序队列为空则跳至子步骤6.8;
子步骤6.7,将总循环次数和循环块内状态个数相同,但已循环次数不等的左右循环块做相等补偿;从左右有序队列中删除首个状态块,并跳至子步骤6.4;
子步骤6.8,判断此时左状态机长度和右状态机长度是否相等,若相等,则该子步骤6.8返回长度相同,若不相等,则该子步骤6.8返回长度不同。
5.根据权利要求4所述的状态机可拼接性和拼接规则判定方法,其中子步骤6.3中所述将具有头区域、主体和尾区域的树形结构的状态块,降维成无头区域和尾区域的状态块的步骤包括:
首先若输入的状态块存在头区域则将头区域中的每个状态块放入子步骤6.3的输入中,调用子步骤6.3,将子步骤6.3返回的有序队列放入输出的有序队列中,然后将主体状态块放入输出有序队列,最后输入的状态块存在尾区域则将尾区域中的每个状态块放入子步骤6.3的输入中,调用子步骤6.3,将子步骤6.3返回的有序队列放入输出的有序队列中。
6.根据权利要求4所述的状态机可拼接性和拼接规则判定方法,其中子步骤6.7中所述将总循环次数和循环块内状态个数相同,但已循环次数不等的左右循环块做相等补偿的步骤包括:判断左右已循环次数的大小,将(|左已循环次数-右已循环次数|×循环块内状态个数)累加到已循环次数较小的状态机长度上。
7.一种状态机可拼接性和拼接规则判定装置,包括当前状态块寄存器(2)、状态块分类模块(3)、全顺序块处理模块(4)、全循环块处理模块(5)、全嵌套循环块处理模块(6)、长度计算模块(8)和系统状态寄存器(7),其中
所述判定装置每次从待判定状态块队列(1)中读取一个状态块,所述当前状态块寄存器(2)存储刚刚读入的状态块;
所述状态块分类模块(3)读取所述当前状态块寄存器(2)和所述系统状态寄存器(7)的值,并根据当前状态块类型和系统状态类型从所述全顺序块处理模块(4)、全循环块处理模块(5)、全嵌套循环块处理模块(6)中选择相应模块进行下一步处理和判定;
所述全顺序块处理模块(4)从所述状态块分类模块(3)中读取当前状态块,并将当前顺序块状态保存至所述系统状态寄存器(7)中,然后使所述判定装置重新读取状态块;若读取结束则输出可拼接判断(11);
所述全循环块处理模块(5)从所述状态块分类模块(3)中读取当前状态块,并读取所述系统状态寄存器(7),然后调用所述长度计算模块(8)进行长度计算;判断完毕后根据判断结果输出相应判断规则或返回使所述判定装置继续读取状态块;
所述全嵌套循环块处理模块(6)从所述状态块分类模块(3)中读取当前状态块,并读取所述系统状态寄存器(7),然后调用所述长度计算模块(8)进行长度计算;判断完毕后根据判断结果输出相应判断规则或返回使所述判定装置继续读取状态块;
所述系统状态寄存器(7)存储当前系统状态,包括状态块的分类,并存储之前读取的状态块的信息;以及
所述长度计算模块(8)由所述全循环块处理模块(5)或所述全嵌套循环块处理模块(6)调用,用于分析和比较循环体的绝对长度并作出循环体相关的可拼接性判断。
8.根据权利要求7所述的状态机可拼接性和拼接规则判定装置,所述判定装置输出3种结果,分别是等价变换规则(9)、不可拼接判断(10)和可拼接判断(11),其中所述等价变换规则(9)表示当前状态块不能直接拼接,但经过等价变换后可能进行拼接,所述不可拼接判断(10)表示当前状态块不可拼接,所述可拼接判断(11)表示当前状态块可直接拼接。
9.根据权利要求7所述的状态机可拼接性和拼接规则判定装置,其中所述待判定状态块队列(1)为待拼接状态机分解得到的状态块,分为顺序块、循环块、嵌套循环块3种。
10.根据权利要求7所述的状态机可拼接性和拼接规则判定装置,其中所述长度计算模块(8)进行长度计算的公式为:长度=循环体的循环长度×(总循环次数-已循环次数)。
CN201410836240.5A 2014-12-26 2014-12-26 一种状态机可拼接性和拼接规则判定方法和装置 Active CN104572029B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201410836240.5A CN104572029B (zh) 2014-12-26 2014-12-26 一种状态机可拼接性和拼接规则判定方法和装置
PCT/CN2015/094443 WO2016101725A1 (zh) 2014-12-26 2015-11-12 一种状态机可拼接性和拼接规则判定方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410836240.5A CN104572029B (zh) 2014-12-26 2014-12-26 一种状态机可拼接性和拼接规则判定方法和装置

Publications (2)

Publication Number Publication Date
CN104572029A CN104572029A (zh) 2015-04-29
CN104572029B true CN104572029B (zh) 2017-06-30

Family

ID=53088206

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410836240.5A Active CN104572029B (zh) 2014-12-26 2014-12-26 一种状态机可拼接性和拼接规则判定方法和装置

Country Status (2)

Country Link
CN (1) CN104572029B (zh)
WO (1) WO2016101725A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572029B (zh) * 2014-12-26 2017-06-30 中国科学院自动化研究所 一种状态机可拼接性和拼接规则判定方法和装置
CN106547525A (zh) * 2015-09-21 2017-03-29 阿里巴巴集团控股有限公司 一种执行完全状态模式的web app的方法和装置
CN111603162B (zh) * 2020-05-07 2023-05-30 京东科技信息技术有限公司 肌电信号处理方法、装置、智能可穿戴设备及存储介质
CN115982074B (zh) * 2023-03-20 2023-07-04 深圳市欣博跃电子有限公司 扩展坞数据处理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5706205A (en) * 1994-09-30 1998-01-06 Kabushiki Kaisha Toshiba Apparatus and method for high-level synthesis of a logic circuit
CN103761075A (zh) * 2014-02-10 2014-04-30 东南大学 一种粗粒度动态可重构数据规整控制单元结构

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02197924A (ja) * 1989-01-27 1990-08-06 Matsushita Electric Ind Co Ltd 中央演算処理装置
CN101216751B (zh) * 2008-01-21 2010-07-14 戴葵 基于分布存储结构的具有数据处理能力的动态随机存储器装置
CN102707919A (zh) * 2012-05-28 2012-10-03 上海海事大学 一种使用有限状态机控制fifo之间读写的装置及方法
CN104156195B (zh) * 2014-08-19 2016-08-24 中国航天科技集团公司第九研究院第七七一研究所 扩展双精度的80位浮点处理单元在处理器中的集成系统及方法
CN104572029B (zh) * 2014-12-26 2017-06-30 中国科学院自动化研究所 一种状态机可拼接性和拼接规则判定方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5706205A (en) * 1994-09-30 1998-01-06 Kabushiki Kaisha Toshiba Apparatus and method for high-level synthesis of a logic circuit
CN103761075A (zh) * 2014-02-10 2014-04-30 东南大学 一种粗粒度动态可重构数据规整控制单元结构

Also Published As

Publication number Publication date
CN104572029A (zh) 2015-04-29
WO2016101725A1 (zh) 2016-06-30

Similar Documents

Publication Publication Date Title
Liang et al. Interpretable structure-evolving LSTM
CN104572029B (zh) 一种状态机可拼接性和拼接规则判定方法和装置
CN109791492B (zh) 流水线相关树查询优化器和调度器
US11062455B2 (en) Data filtering of image stacks and video streams
CN110532883A (zh) 应用离线跟踪算法对在线跟踪算法进行改进
Hu et al. Open-domain visual entity recognition: Towards recognizing millions of wikipedia entities
US20200388030A1 (en) Object Tracking and Redaction
Yu et al. Loss rank mining: A general hard example mining method for real-time detectors
Shankar et al. Comparing YOLOV3, YOLOV5 & YOLOV7 Architectures for Underwater Marine Creatures Detection
Li et al. Alpha-SGANet: A multi-attention-scale feature pyramid network combined with lightweight network based on Alpha-IoU loss
US11080173B2 (en) Boundary search test support device and boundary search test support method
CN111353577B (zh) 基于多任务的级联组合模型的优化方法、装置及终端设备
CN116188815A (zh) 一种视频相似度检测方法、系统、存储介质和电子设备
Wang et al. Speed-up Single Shot Detector on GPU with CUDA
CN110210215A (zh) 一种病毒检测的方法以及相关装置
CN107729518A (zh) 一种关系型数据库的全文检索方法及装置
CN110737465B (zh) 一种函数调用路径获取的方法和相关装置
Dias et al. Transfer Learning with CNN Architectures for Classifying Gastrointestinal Diseases and Anatomical Landmarks.
CN112433710A (zh) 一种区块链智能合约生成方法、设备及存储介质
CN105224697A (zh) 带过滤条件的排序方法和用于执行所述方法的装置
CN112861891A (zh) 用户行为异常检测方法和装置
Ning et al. POSTER: Cutting the Fat: Speeding Up RBM for Fast Deep Learning Through Generalized Redundancy Elimination
CN109635191A (zh) 相似度确定方法、装置、存储介质和计算机设备
CN116186553B (zh) 一种软件项目管理中基于图算法的冲突消解方法及系统
CN113626711B (zh) 手机银行直播视频推荐方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20171129

Address after: 102412 Beijing City, Fangshan District Yan Village Yan Fu Road No. 1 No. 11 building 4 layer 402

Patentee after: Beijing Si Lang science and Technology Co.,Ltd.

Address before: 100190 Zhongguancun East Road, Beijing, No. 95, No.

Patentee before: Institute of Automation, Chinese Academy of Sciences

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 201306 building C, No. 888, Huanhu West 2nd Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai

Patentee after: Shanghai Silang Technology Co.,Ltd.

Address before: 102412 room 402, 4th floor, building 11, No. 1, Yanfu Road, Yancun Town, Fangshan District, Beijing

Patentee before: Beijing Si Lang science and Technology Co.,Ltd.