[发明专利]一种状态机等价变换的方法和装置有效
申请号: | 201410836231.6 | 申请日: | 2014-12-26 |
公开(公告)号: | CN104572028A | 公开(公告)日: | 2015-04-29 |
发明(设计)人: | 王磊;杨磊;谢少林 | 申请(专利权)人: | 中国科学院自动化研究所 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 宋焰琴 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 状态机 等价 变换 方法 装置 | ||
技术领域
本发明涉及数字集成电路领域,更具体地涉及一种状态机等价变换的方法和装置,以降低动态可配置流水线的电路复杂度和配置程序的开发难度。
背景技术
流水线以及用状态机控制流水线上的各个流水级和流水级之间的连接关系是一种普遍应用的数字集成电路形式。例如指令的流水线、网络处理器里处理数据包的流水线、基带信号处理的流水线等等。指令流水线技术是指在程序执行时多条指令重叠进行操作的一种处理技术,它将指令分解成不同的阶段,让电路能够按照指定的操作更加充分的利用硬件资源。
动态可重配流水线技术使得硬件电路结构更加灵活可控,其本质是用程序描述流水线上各个状态机的行为。状态机对应于电路中各个功能单元,通过编程设计和配置状态机可以方便的操控硬件资源。然后,电路较为复杂时,状态机的设计和配置就变得极其复杂。
当状态机实现的功能较为复杂、状态机的形式和类型较多的时候,在状态机拼接过程中会遇到很多复杂的情况导致无法直接拼接。例如循环状态块和顺序状态块的拼接情况,以及循环状态块和嵌套循环状态块的拼接情况等。这时需要对状态机进行特定的定价变换,使得变换后的状态机可以进行拼接,且状态机实现的功能不变。
发明内容
有鉴于此,本发明提出一种状态机等价变换的方法,以对各种符合等价变换规则的状态机设计等价变换规则,提高状态机拼接范围和正确性。
为了实现上述目的,作为本发明的一个方面,本发明提出了一种状态机等价变换的方法,包括以下步骤:
步骤1,将状态机的状态块初始化成树形二维结构;
步骤2,读取一个状态机和状态机的状态提取方式,根据状态提取方式对状态机选择输出或反向;如果提取方式是正向提取,则将输入状态机放入步骤3的输入中,跳转至步骤3;如果提取方式是反向提取,则将状态块放入步骤2.1的输入中,调用步骤2.1,将步骤2.1返回的状态块替换状态机中的原状态块,并将新状态机放入步骤3的输入,跳转至步骤3;
步骤2.1,将输入状态机的尾区域标示为头区域,同时将原头区域标识为尾区域;
其中,如果当前主区域为嵌套循环块,则将嵌套循环块中的状态块,颠倒序列,并对每个状态块调用步骤2.1,用返回的状态块替换嵌套循环块中的原状态块;如果当前主区域不是嵌套循环块,则将主区域中状态块里所有状态颠倒顺序;
将调整后的状态块输出,返回到调用当前此步骤的前一个步骤中;
步骤3,读取一个输入状态机的首个状态块,判断该状态块的类型,并跳转到相应状态块状态提取的步骤中;其中
如果当前状态块为顺序块,则跳转至步骤4;
如果当前状态块为循环块,则跳转至步骤5;
如果当前状态块为嵌套循环块,则跳转至步骤6;
步骤4,接收一个顺序状态块和待提取长度作为输入,从输入顺序块头部提取出指定数量个状态置于头区域中,并修改待提取长度;将提取后的状态机输出,跳转至步骤8;
步骤5,接收一个循环块和待提取长度作为输入,判断待提取长度与循环块内部状态数量和尾区域状态数量,提取指定数量的状态;
子步骤5.0,计算循环块尾区域的长度,并判断当前是否需要提取一次循环块;
子步骤5.1,将循环体内部所有状态按顺序组成一个新的顺序块,将该顺序块放入尾区域的头部,将循环块的已循环次数加1,跳转至子步骤5.2;
子步骤5.2,如果待提取长度大于等于循环块内部状态数量,则将尾区域中首个顺序块放到提取区域的尾部,并将待提取数量减去循环块内部状态数量,跳转到步骤8;如果待提取长度小于循环块内部状态数量,则将尾区域中的顺序块按顺序合并成一个顺序块,然后从合并的顺序块中提取出头部的待提取长度个状态,组成一个新的顺序块放入提取区域的尾部,清空尾区域,若提取后的顺序块内状态数不为0,则将提取后的顺序块放入尾区域中。跳转至子步骤5.3;
子步骤5.3,将循环块内头部待提取长度个状态取出放到循环块内状态的尾部,形成一次循环滚动,并将待提取长度置为0,跳转至子步骤8;
步骤6,接收嵌套循环块和待提取长度作为输入,从输入嵌套循环块头部提取出指定数量个状态,输出可用于状态机拼接的状态块的组合;
子步骤6.0,如果尾区域为空,则跳至子步骤6.1;如果尾区域非空,则跳至子步骤6.2;
子步骤6.1,提取嵌套循环块内的所有状态块,按顺序置于尾区域中,将嵌套循环块的已循环次数加1,跳转至子步骤6.2;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院自动化研究所,未经中国科学院自动化研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410836231.6/2.html,转载请声明来源钻瓜专利网。