一种基于流水线执行策略的硬件SAT求解器制造技术

技术编号:24120286 阅读:67 留言:0更新日期:2020-05-13 02:52
本发明专利技术提供了一种基于流水线执行策略的硬件SAT求解器,包括预处理模块、输出模块和子句搜索及变元翻转模块。其中,预处理模块,用于产生CNF公式变元的初始赋值、提取当前赋值下的不可满足子句以及所述CNF公式的子句和变元信息;输出模块,用于输出所述CNF公式是否是可满足的;子句搜索及变元翻转模块,用于按照预设的最大指定次数内以第一线程、第二线程、第三线程和第四线程按流水线执行策略同步循环执行搜索不可满足子句并按照一定概率对子句变元进行翻转并存储变元翻转后不可满足的子句。本发明专利技术提供的硬件SAT求解器在求解SAT问题过程中采用流水线策略,实现了流水线并行求解,提高了硬件系统的工作时钟频率和吞吐率,增强了求解器的处理能力。

【技术实现步骤摘要】
一种基于流水线执行策略的硬件SAT求解器
本专利技术属于计算机
,具体涉及一种SAT求解器,尤其涉及一种基于流水线执行策略的硬件SAT求解器。
技术介绍
SAT问题中(satisifiabilityproblem,布尔可满足性问题),给定一组有限变元集合X={x1,x2,…,xn},xn可以被赋值为真(1)或假(0),文字li是变元xi或其否定且有子句C由文字析取(表示“或”的意思)而成,合取范式CNF(conjecturednormalformula)公式由多个子句合取而成,如即是一个有5个变元和4个子句组成的CNF公式。子句中任意文字被赋值为真,则子句为真,或被满足;子句中所有文字同时赋值为假,则称指定赋值使得子句为假,或指定赋值使得子句不被满足,公式为可满足当且仅当所有子句同时被满足。SAT问题是指寻找X上所有变元的一组赋值X′:X→{0,1},使得为真。如果存在这样的赋值,则是可满足的;如果不存在这样的赋值,则是不可满足的。SAT问题被史蒂文·库克(StevenCook)于1971年证明为NP完全问题,这意味着可以在多项式时间内非常快速地求解,并且在多项式时间内,NP类的所有其他问题都可归结为SAT问题。求解SAT问题最直接、粗暴的办法是枚举法,即尝试输入变元的所有可能赋值,然而,这种算法的求解时间会随着变元数量的增加呈指数增长。在过去的几十年里,解决SAT问题的算法,也称为SAT求解器,取得了巨大的进步。十多年前认为无法求解的问题,现在可以用先进的SAT求解器在几秒钟内得以解决。现代SAT求解器可以集成更为先进的求解技术,通过这些技术开发的软件求解器甚至能够解决多大数百万个变元的难的SAT问题。当SAT求解器试图解决一个问题时,它会对变元进行完全或部分赋初值(分别用α和β表示)。对公式完全赋值是对公式中的每一个变元赋0或者1,如α=(x1=1,x2=0,x3=1,x4=1,x5=1)。相反,部分赋值是对公式变元集合的子集赋值,如β=(x1=1,x2=0)。对公式的赋值应遵循布尔逻辑的规则。例如,子句中存在某个或多个文字为真(即值为1),则该子句是可满足的,并可从公式中删除。如果公式是空的(即不再有需要满足的子句),则该公式满足。相反,如果子句中文字为假,则可从子句中删除该文字。因此,如果子句是空的,那么该子句就不能被满足,故简化后的公式也是不可满足的。现有的硬件SAT求解器大部分都是按顺序执行的,多个步骤执行时,前一步骤完成后往往需要多个时钟周期来等待处理下一个步骤,这就产生的延迟,带来了大量的时钟开销,系统的吞吐率较低。
技术实现思路
本专利技术要解决的技术问题是针对
技术介绍
中所涉及到的缺陷,提供一种基于流水线执行策略的硬件SAT求解器,在硬件SAT求解器求解SAT问题过程中采用流水线策略,提高了硬件系统的工作时钟频率和吞吐率,增强了求解器的处理能力。为解决上述技术问题,本专利技术采用以下技术方案:一种基于流水线执行策略的硬件SAT求解器,包括预处理模块、输出模块和子句搜索及变元翻转模块。预处理模块,用于产生CNF公式变元的初始赋值、提取当前赋值下的不可满足子句以及所述CNF公式的子句和变元信息。输出模块,用于输出所述CNF公式是否是可满足的。子句搜索及变元翻转模块,用于按照预设的最大指定次数内以第一线程、第二线程、第三线程和第四线程按流水线执行策略同步循环执行搜索不可满足子句并按照一定概率对子句变元进行翻转并存储变元翻转后不可满足的子句,并将求解结果发送给输出模块。进一步地,硬件SAT求解器还包括:地址映射表、子句映射表、变元映射表和FIFO树。地址映射表用于记录子句数据存储在片上存储器中的地址;子句映射表用于存储子句数据;变元映射表用于存储初始赋值的子句以及变元翻转后的子句;FIFO树,用于存储变元翻转后不可满足的子句。进一步地,子句搜索及变元翻转模块按照预设的最大指定次数内以第一线程、第二线程、第三线程和第四线程按流水线执行策略同步循环执行搜索不可满足子句并按照一定概率对子句变元进行翻转并存储变元翻转后不可满足的子句,具体包括:一个循环周期为十二个时钟周期;第一线程在第一个时钟周期内,执行选择所述FIFO树中第一不可满足子句并根据所述第一不可满足子句的第一变元读地址映射表。第一线程在第二个时钟周期内,执行根据所述第一不可满足子句的第一变元读子句映射表,并执行根据所述第一不可满足子句的第二变元读地址映射表。第一线程在第三个时钟周期内,执行根据所述第一不可满足子句的第一变元读变元映射表,并执行根据所述第一不可满足子句的第二变元读子句映射表,并执行根据所述第一不可满足子句的第三变元读地址映射表。第一线程在第四个时钟周期内,执行评估根据所述第一不可满足子句的第一变元读变元映射表获得的子句并暂存评估为不可满足的第二不可满足子句,并执行根据所述第一不可满足子句的第二变元读变元映射表,并执行根据所述第一不可满足子句的第三变元读子句映射表。第一线程在第五个时钟周期内,执行计算所述第二不可满足子句的第一变元的break-value值并排序,并执行根据所述第一不可满足子句的第二变元读变元映射表获得的子句并暂存评估为不可满足的第三不可满足子句,并执行根据所述第一不可满足子句的所述第三变元读变元映射表。第一线程在第六个时钟周期内,执行计算所述第二不可满足子句的第二变元的break-value值并排序,并执行计算所述第三不可满足子句的第一变元的break-value值并排序,并执行根据所述第一不可满足子句的第三变元读变元映射表获得的子句并暂存评估为不可满足的第四不可满足子句。第一线程在第七个时钟周期内,执行计算所述第二不可满足子句的第三变元的break-value值并排序,并执行计算所述第三不可满足子句的第二变元的break-value值并排序,并执行计算所述第四不可满足子句的第一变元的break-value值并排序,并执行根据概率选择变元进行翻转并选择翻转后的不可满足子句。第一线程在第八个时钟周期内,执行计算所述第三不可满足子句的第三变元的break-value值并排序,并执行计算所述第四不可满足子句的第二变元的break-value值并排序,并执行根据概率选择变元进行翻转并选择翻转后的不可满足子句。第一线程在第九个时钟周期内,执行计算所述第四不可满足子句的第三变元的break-value值并排序,并执行根据概率选择变元进行翻转并选择翻转后的不可满足子句。第一线程在第十个时钟周期内,执行根据概率选择变元进行翻转并选择翻转后的不可满足子句,并收集变元翻转后不可满足的子句并存储到FIFO树。第一线程在第十一个时钟周期内,执行根据概率选择变元进行翻转并选择翻转后的不可满足子句,并收集变元翻转后不可满足的子句并存储到FIFO树。第一线程在第十二个时钟周期内,执行根据概率选择变元进行翻转并选择翻转后的不可满足子句,并收集变元翻转后不可满足的子句并存储到FIFO树本文档来自技高网
...

【技术保护点】
1.一种基于流水线执行策略的硬件SAT求解器,其特征在于,/n包括:预处理模块、输出模块和子句搜索及变元翻转模块;/n所述预处理模块,用于产生CNF公式变元的初始赋值,提取当前赋值下的不可满足子句以及所述CNF公式的子句和变元信息;/n所述输出模块,用于输出所述CNF公式是否是可满足的;/n所述子句搜索及变元翻转模块,用于按照预设的最大指定次数内以第一线程、第二线程、第三线程和第四线程按流水线执行策略同步循环执行搜索不可满足子句并按照一定概率对子句变元进行翻转并存储变元翻转后不可满足的子句,并将求解结果发送给输出模块。/n

【技术特征摘要】
1.一种基于流水线执行策略的硬件SAT求解器,其特征在于,
包括:预处理模块、输出模块和子句搜索及变元翻转模块;
所述预处理模块,用于产生CNF公式变元的初始赋值,提取当前赋值下的不可满足子句以及所述CNF公式的子句和变元信息;
所述输出模块,用于输出所述CNF公式是否是可满足的;
所述子句搜索及变元翻转模块,用于按照预设的最大指定次数内以第一线程、第二线程、第三线程和第四线程按流水线执行策略同步循环执行搜索不可满足子句并按照一定概率对子句变元进行翻转并存储变元翻转后不可满足的子句,并将求解结果发送给输出模块。


2.如权利要求1所述的一种基于流水线执行策略的硬件SAT求解器,其特征在于,
所述硬件SAT求解器还包括:地址映射表、子句映射表、变元映射表和FIFO树;
所述地址映射表,用于将预处理模块发送的子句数据存储在片上存储器中的地址;
所述子句映射表,用于在地址映射表中记录的片上存储器中的地址上存储子句数据;
所述变元映射表,用于存储初始赋值的子句以及变元翻转后的子句;
所述FIFO树,用于存储变元翻转后不可满足的子句。


3.如权利要求2所述的一种基于流水线执行策略的硬件SAT求解器,其特征在于,
所述子句搜索及变元翻转模块按照预设的最大指定次数内以第一线程、第二线程、第三线程和第四线程按流水线执行策略同步循环执行搜索不可满足子句并按照一定概率对子句变元进行翻转并存储变元翻转后不可满足的子句,具体包括:
一个循环周期为十二个时钟周期;
所述第一线程在第一个时钟周期内,执行选择所述FIFO树中第一不可满足子句并根据所述第一不可满足子句的第一变元读地址映射表;
所述第一线程在第二个时钟周期内,执行根据所述第一不可满足子句的第一变元读子句映射表,并执行根据所述第一不可满足子句的第二变元读地址映射表;
所述第一线程在第三个时钟周期内,执行根据所述第一不可满足子句的第一变元读变元映射表,并执行根据所述第一不可满足子句的第二变元读子句映射表,并执行根据所述第一不可满足子句的第三变元读地址映射表;
所述第一线程在第四个时钟周期内,执行评估根据所述第一不可满足子句的第一变元读变元映射表获得的子句并暂存评估为不可满足的第二不可满足子句,并执行根据所述第一不可满足子句的第二变元读变元映射表,并执行根据所述第一不可满足子句的第三变元读子句映射表;
所述第一线程在第五个时钟周期内,执行计算所述第二不可满足子句的第一变元的break-value值并排序,并执行根据所述第一不可满足子句的第二...

【专利技术属性】
技术研发人员:张建民马柯帆陆平静孙岩董德尊罗章欧洋王强齐星云曹继军戴艺
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:湖南;43

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

1