一种IO高效检测大规模系统环路方法技术方案

技术编号:14453839 阅读:123 留言:0更新日期:2017-01-19 01:06
本发明专利技术公开一种IO高效检测大规模系统环路方法,构建了一个通用的框架去寻找所有反例,对于每一个可接受状态,DACC首先寻找ASCC包含的可接受状态,接下来找到ASCC的所有可接受环路,本申请方法的优点在于避免了搜索许多无用路径,这些无用路径不可能到达可接受环路。为了进一步降低I/O的复杂度和提高本申请方法的表现,本申请提出来计算两个状态交集和动态路径管理技术。交集计算技术最差的I/O复杂度是线性的,因此可以提高搜索ASCCs算法的表现。动态路径管理技术在搜索的时候可以降低内存抖动现象,从而提高找到所有可接受状态算法的表现。

【技术实现步骤摘要】

本专利技术涉及模型检测领域,特别涉及一种LTL模型高效检测大规模环路技术。
技术介绍
模型检测算法是一种好的方法针对于硬件和软件的形式化验证,他可以自动的检测是否满足系统的状态并且可以检测出反例,模型检测在硬件的形式化方法当中有着广泛的使用。但是这种方法面临着状态空间爆炸的问题,因为该方法在使用大规模系统的时候会面临着内存不足。实际当中模型检测主要存在以下两个方式:内存算法和外存算法;为了解决状态爆炸问题,内存算法主要针对于降低系统的大小和表现。到目前为止,有很多方法针对于内存算法,例如:偏序规约、对称消减、抽象提取、组合提取、符号模型检测、符号路径追踪、自动机理论以及边界模型检测等等,尽管如此,由于内存的局限性,在大规模系统验证当中,内存算法显得不是很实用。相比较于内存,外存设备可以提供足够大的存储空间,在过去的几年里,外存的存储空间也是巨大的发展,并且外存的费用也在逐渐降低,外存的单位字节费用要比内存便宜的多,因此更加推荐使用外部存储设备,由于外部存储设备就存储速度要比内部存储速度要慢几个数量级,因此降低I/O的次数从而提高时间效率是目前继续解决的问题。I/O复杂模型因为信息在外部存储设备当中的存储速度要比在内部存储速度慢的多,因此外部存储算法通常作为I/O的操作算法,这里I/O操作值得是将数据从内存中读取放到外存当中去,例如:针对于ITC’99,B15(std),P1的基准,的算法代价在210次I/O操作当中找到反例。对于外部存储算法的复杂度分析,广泛使用的模型是Aggarwal和Vitter,在该模型当中,I/O操作的次数通常被描述为0O(scan(N))和O(sort(N)),基于O(N/B)和O(N/B·logM/B(N/B)),分别的,当N定义为系统状态的总数量,M定义为第一次进入到内存当中的数量,B定义为可以被单个I/O操作的转移的状态数量,并且O(N/B)定义为与N/B有相同的阶数。
技术实现思路
本专利技术为解决上述技术问题,提出了一种IO高效检测大规模系统环路方法,构建了一个通用的框架去寻找所有反例,对于每一个可接受状态,DACC首先寻找ASCC包含的可接受状态,接下来找到ASCC的所有可接受环路,避免了搜索许多无用路径,这些无用路径不可能到达可接受环路。本申请提出来计算两个状态交集和动态路径管理技术,进一步降低I/O的复杂度和提高本申请方法的表现。本专利技术采用的技术方案是:一种IO高效检测大规模系统环路方法,包括:S1、建立DACC框架,遍历所有的可接受状态集合,对于每一个可接受状态,首先通过使用SFA算法寻找ASCC包含的可接受状态,接下来再利用FACA去寻找ASCC的可接受环路,当可接受状态都被遍历了,则所有可接受环路也就都被找到;S2、通过调用enumerateBFS()使用外部广度优先算法BFS,然后通过使用算法EPH构成了MPHF;根据步骤S1建立的DACC框架,DACC找到所有系统可接受状态;S3、首先从可接受状态中计算之前可达状态集合和之后可达状态,然后计算他们ASCC包含可接受状态的交点;S4、寻找ASCC中所有可以接受状态的环路。进一步地,步骤S3在找到ASCC包含的可接受状态的交点后,DACC通过for循环从F中删除了所有可接受状态。进一步地,所述步骤S3具体包括以下分步骤:S31、计算两个交叉状态的集合,假设Q1和Q2是两个状态集合,H1和H2分别是等价于Q1和Q2的两个哈希表。那么两个哈希表中标签值为1的状态集合是两个状态集合的交集;S32、寻找一个可接受状态的可达状态设置,首先通过repeat循环从当前级别的min(m,#(currentTable))移动到队列current中,接下来计算队列current的每个状态的非重复状态并存储在下一个队列next中,并将H表中非重复状态的标签设置为1;其中,#(currentTable)定义为currentTable的个数,min(m,#(currentTable))定义为m到#(currentTable)的最小数;S33、计算ASCC,给定可接受状态s,算法计算交叉集合和计算可达状态集合,函数SFA()返回的结果H杜宇的哈希表的ASSCC(s)。进一步地,如果状态的表情为1,则它的重复检测通过调用gettag()来实现;如果队列next为满的,那么将磁盘当中所有状态从next移动到nextTable当中去,移动min(m,#(currentTable))状态从当前级别到队列中再排队,直到currentTable为空。进一步地,步骤S4包括以下分步骤:S41、等价可接受环路;S42、动态路径管理,在搜索过程中,当栈是满的情况下和有一个新的状态生成,为了避免内存溢出,将栈的状态移动到tableP当中;S43、在ASCC中找出所有初级可接受环路,给定的哈希表所描述的ASCC,算法FACA计算了ASCC的所有基本可接受环路。更进一步地,步骤S42还包括:A1、当栈为空的时候,从stack只移动一些状态到tableP去给新状态一定的空间,移动k个状态到栈底,进入到tableP当中,并且释放相关内存空间,接下来栈底stack指向第(k+1)的状态,其中,k=#(stack)·ρ,ρ是大于0小于1的参数;A2、当stack变为空时,如果tableP不为空,那么将k个状态存储到最近存储在tableP入stack反过来的状态,并删除K个状态从tableP中;其中,k=min(#tableP,M·ρ)。本专利技术的有益效果:本申请的一种IO高效检测大规模系统环路方法,构建了一个通用的框架去寻找所有反例,对于每一个可接受状态,DACC首先寻找ASCC包含的可接受状态,接下来找到ASCC的所有可接受环路。当所有可接受状态都被遍历了一遍,所有可接受环路也就都被找到了。这个方法的优点在于避免了搜索许多无用路径,这些无用路径不可能到达可接受环路。为了进一步降低I/O的复杂度和提高我们方法的表现,本申请提出来计算两个状态交集和动态路径管理技术。交集计算技术最差的I/O复杂度是线性的因此可以提高搜索ASCCs算法的表现。动态路径管理技术在搜索的时候可以降低内存抖动现象,从而提高找到所有可接受状态算法的表现。本申请当中的内存抖动值得是状态频繁的在内存和外存之间移动,从而明显的增加I/O的操作次数和降低算法的效率。附图说明图1为本专利技术提供的方案流程图。具体实施方式为便于本领域技术人员理解本专利技术的
技术实现思路
,下面结合附图对本
技术实现思路
进一步阐释。如图1所示为本专利技术的方案流程图,本专利技术的技术方案为:一种IO高效检测大规模系统环路方法,包括:S1、建立DACC框架,遍历所有的可接受状态集合,对于每一个可接受状态,首先通过使用SFA算法寻找ASCC包含的可接受状态,接下来再利用FACA去寻找ASCC的可接受环路,当可接受状态都被遍历了,则所有可接受环路也就都被找到。S2、通过调用enumerateBFS()使用外部广度优先算法BFS,然后通过使用算法EPH构成了MPHF;根据步骤S1建立的DACC框架,DACC找到所有系统可接受状态;为了避免重复计算和加快DACC,在找到ASCC包含的可接受状态后,DACC通过for循环从F中本文档来自技高网
...

【技术保护点】
一种IO高效检测大规模系统环路方法,其特征在于,包括:S1、建立DACC框架,遍历所有的可接受状态集合,对于每一个可接受状态,首先通过使用SFA算法寻找ASCC包含的可接受状态,接下来再利用FACA去寻找ASCC的可接受环路,当可接受状态都被遍历了,则所有可接受环路也就都被找到;S2、通过调用enumerateBFS()使用外部广度优先算法BFS,然后通过使用算法EPH构成了MPHF;根据步骤S1建立的DACC框架,DACC找到所有系统可接受状态;S3、首先从可接受状态中计算之前可达状态集合和之后可达状态,然后计算他们ASCC包含可接受状态的交点;S4、寻找ASCC中所有可以接受状态的环路。

【技术特征摘要】
1.一种IO高效检测大规模系统环路方法,其特征在于,包括:S1、建立DACC框架,遍历所有的可接受状态集合,对于每一个可接受状态,首先通过使用SFA算法寻找ASCC包含的可接受状态,接下来再利用FACA去寻找ASCC的可接受环路,当可接受状态都被遍历了,则所有可接受环路也就都被找到;S2、通过调用enumerateBFS()使用外部广度优先算法BFS,然后通过使用算法EPH构成了MPHF;根据步骤S1建立的DACC框架,DACC找到所有系统可接受状态;S3、首先从可接受状态中计算之前可达状态集合和之后可达状态,然后计算他们ASCC包含可接受状态的交点;S4、寻找ASCC中所有可以接受状态的环路。2.根据权利要求1所述的一种IO高效检测大规模系统环路方法,其特征在于,步骤S3在找到ASCC包含的可接受状态的交点后,DACC通过for循环从F中删除了所有可接受状态。3.根据权利要求1所述的一种IO高效检测大规模系统环路方法,其特征在于,所述步骤S3具体包括以下分步骤:S31、计算两个交叉状态的集合,假设Q1和Q2是两个状态集合,H1和H2分别是等价于Q1和Q2的两个哈希表。那么两个哈希表中标签值为1的状态集合是两个状态集合的交集;S32、寻找一个可接受状态的可达状态设置,首先通过repeat循环从当前级别的min(m,#(currentTable))移动到队列current中,接下来计算队列current的每个状态的非重复状态并存储在下一个队列next中,并将H表中非重复状态的标签设置为1;其中,#(currentTable)定义为currentTable的个数,min(m,#(currentTable))...

【专利技术属性】
技术研发人员:吴立军
申请(专利权)人:成都科鸿达科技有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1