CN105893660B - 一种面向符号bdd操作的cpu设计方法及计算系统 - Google Patents

一种面向符号bdd操作的cpu设计方法及计算系统 Download PDF

Info

Publication number
CN105893660B
CN105893660B CN201610190855.4A CN201610190855A CN105893660B CN 105893660 B CN105893660 B CN 105893660B CN 201610190855 A CN201610190855 A CN 201610190855A CN 105893660 B CN105893660 B CN 105893660B
Authority
CN
China
Prior art keywords
node
bdd
data
instruction
hash
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.)
Expired - Fee Related
Application number
CN201610190855.4A
Other languages
English (en)
Other versions
CN105893660A (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.)
Guilin University of Electronic Technology
Original Assignee
Guilin University of Electronic Technology
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 Guilin University of Electronic Technology filed Critical Guilin University of Electronic Technology
Priority to CN201610190855.4A priority Critical patent/CN105893660B/zh
Publication of CN105893660A publication Critical patent/CN105893660A/zh
Application granted granted Critical
Publication of CN105893660B publication Critical patent/CN105893660B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开一种面向符号BDD操作的CPU设计方法及计算系统,包括:BDD数据结构设计、新型数据结构操作算法、专用指令系统设计、CPU内核与构架设计、BDD操作专用运算系统构建以及系统的硬件实现。本发明通过用户上位机将操作对象转换,传输至所设计的专用BDD运算系统,通过系统内专用CPU运算机制对BDD数据进行操作计算,以达到快速运算的目的;通过建立新型BDD数据结构与对应操作算法,提高了BDD操作运算的效率。本发明能够在较高的算法效率以及较高的硬件处理效率下完成BDD操作计算任务,同时还能保证BDD数据的正确性和简洁性。

Description

一种面向符号BDD操作的CPU设计方法及计算系统
技术领域
本发明涉及计算机技术领域,具体涉及一种面向符号BDD(Binary DecisionDiagram,二叉决策图)操作的CPU设计方法及计算系统。
背景技术
符号BDD操作运算被应用于密码学、IP路由查找、装配序列规划化等领域,提高数据处理的速度、保证运算结果的正确性及稳定性、减少硬件消耗与能耗是这些领域长期的追求。
目前提高BDD操作运算速度的方法主要有:
(1)基于OBDD方法:将BDD转化为OBDD,并进行精简转化为ROBDD,可减少数据存储量以及计算量,可有效减少操作运算的时间。
(2)基于硬件加速方法:设计单独存储BDD节点的硬件模块,将用户程序嵌入上位机来管理BDD所用该模块的指针,进而实现相应的操作功能,获得了一定的加速效果。
(3)基于NISC技术方法:在基于OBDD方法和基于硬件加速方法的基础上,利用NISC编译器设计BDD操作应用程序的RTL模块,分别生成控制部分和数据模块,利用上位机传输模块功能信息生成NISC处理器,进一步加速了该操作的运算。
上述方法分别从算法优化和硬件功能模块两大方向对BDD操作运行进行了加速,但仍存在利用高级语言运行操作程序时,使用的数据结构步骤繁多的问题。此外,这些方法所用到的处理器和均是通用型处理器,在规定只完成特定的运算情况下,使用通用指令集容易造成时间周期浪费现象。故在数据结构、指令系统、内核运算机制等方面,BDD操作都还有加速的空间。
发明内容
本发明提供一种面向符号BDD操作的CPU设计方法及计算系统,其能够进一步提高BDD操作运算速度。
为解决上述问题,本发明是通过以下技术方案实现的:
一种面向符号BDD操作的CPU设计方法,包括如下步骤:
步骤1.依据BDD树的结构与属性,定义BDD数据的结构、存储方式和递归映射方式;
步骤2.基于步骤1所定义的BDD数据的结构、存储方式和递归映射方式,生成BDD数据操作算法;
步骤3.针对步骤2生成的BDD操作算法设计专用指令系统,并利用专用指令系系统描述步骤2所生成的BDD数据操作算法;
步骤4.依据步骤3生成的指令系统,利用Xilinx平台设计与验证CPU内核与构架的功能,组成完整的CPU结构。
上述步骤1具体为:
步骤11.为每个节点分配四个属性值,分别为节点的等级level、节点的地址偏移量AOP、节点的左分支指向low和节点的右分支指向high;其中节点的左分支指向low和节点的右分支指向high均指向该节点的子节点地址偏移量值AOP;
步骤12.每组hash值由2个操作节点的地址偏移量值AOP填充;
步骤13.确定BDD树的表达形式,先根据步骤11填充BDD树的每个叶节点,随后根据步骤12从BDD树的根节点开始对BDD树的每个节点进行顺序排列;hash表的读写顺序与该排列相同,当读与写的指针相同且无后续hash值时,意味着操作结束。
上述步骤2具体为:
步骤21.将所生成的BDD数据存入数据存储器DRAM中,记录所操作每个BDD树的初始地址以及节点个数,初始化各存储器指针;
步骤22.取出两个BDD树的根节点进行操作,分析节点中是否存在支配点,若存在支配点,则操作结束,写入操作结果;若不存在支配值,则生成新节点的地址偏移量值AOP与等级值level,生成两组hash值存入哈希存储器HRAM中;
步骤23.判断是否剩余hash值;若无剩余,则节点生成完毕,跳转至步骤26;若有剩余,则读取hash值,记录读后hash地址值,记录读取hash值次数;
步骤24.检测该组hash值是否存在支配点,若存在,则计算操作值并补充父节点,若不存在,则判断hash值是否重复;若重复,读取重复hash值所对应的节点单元,读入该节点地址偏移量值AOP用于补充重复节点的父节点;若不重复,则将读入的hash值转化为节点地址,读取所指向的2个节点;
步骤25.分析节点组;判断是否存在支配点,若存在,则计算操作值,补充父节点分支指向,跳转至步骤23;若不存在支配点,则生成新节点的等级level与地址偏移量值AOP,生成子节点操作的两组hash值写入hash表中,跳转至步骤23;
步骤26.查询重复节点,从高等级节点开始,标记重复节点,修改对应父节点指向;
步骤27.检测冗余节点,从高等级节点开始,标记冗余节点,同时修改其父节点指向;
步骤28.重复步骤26和步骤27,直到没有重复节点和冗余节点为止,简化结束,操作完毕。
上述步骤3具体为:
步骤31.依据步骤2生成BDD数据操作算法,在已有针对DRAM指令下,新增针对HRAM的操作指令;
步骤32.为方便本发明BDD操作过程地址计算,加入地址处理指令,该类型的指令的处理目标只包括地址类寄存器;
步骤33.为提高读取效率,设计连读/连写指令,该指令针对连续两次以上且五次以下连续读/写的情况;
步骤34.为提高指令与BDD操作算法的契合度,设计对应特殊指令,包括叶节点判断指令yjd、操作类型定义指令cz、两个叶节点操作指令scz等;
步骤35.为解决程序之间的控制相关与数据相关问题,新增空指令nop;
步骤36.为确保BDD操作程序正常运行,补充部分计算类与转移类指令。
上述步骤4具体为:
步骤41.依据步骤2生成BDD数据操作算法,所需的数据存储器与哈希映射分开设立,故设立数据存储器DRAM与哈希存储器HRAM,而程序存储器IRAM不可或缺;同时,为方便后续的功能扩展,还需加入堆栈存储器SRAM以待备用;
步骤42.总结所需要的数据寄存器、地址寄存器、计数器、累加器等寄存器;分别分配31个地址寄存器与数据寄存器,备用于程序调用,另设通用寄存器组以备数据值与地址值之间转换;
步骤43.统计各寄存器与每个指令之间的操作状态机,将该状态机利用硬件描述语言进行描述,生成CPU的控制内核;而对于算法中未出现的状态机则无需硬件描述,以节省空间资源;
步骤44.依据地址单独处理机制,每个指令由取指、分析、执行、写回四个步骤完成,然而连续读/写指令则需要额外的执行周期,故本发明CPU主要采取3级循环流水线机制,然而,连读/写指令内涵多执行阶段,执行完毕一条连读/写指令最多需要六个周期的时间,故连读/写指令类型采用6级流水线结构;
步骤45.利用软件IP核生成器生成四个存储模块,分别对应步骤41的4个存储空间,便于本发明设计的CPU功能的可行性验证。
作为改进,步骤4之后,还进一步包括如下步骤:
步骤5,通过硬件实现步骤4所设计的CPU,定义外设接口,连接上位机通信,由此构成面向符号BDD操作的CPU加速运算系统。
基于上述方法的所述的一种面向符号BDD操作的计算系统,包括数据生成单元、CPU内核控制单元和BDD操作运算单元,其中:
数据生成单元,将BBD操作对象转化为BDD数据,并将该数据传入BDD操作运算单元;
CPU内核控制单元,完成指令系统的每条指令任务,控制BDD操作程序运行;
BDD操作运算单元,CPU内核控制单元基础上组合外围模块,进行完整BDD数据的操作运算及存储,并将计算结果输出至外部设备或上位机。
与现有技术相比,本发明具有如下特点:
1.本发明提出的CPU构架只针对BDD操作算法而设计,其数据存储器DRAM只存储所BDD数据,无需提前分配空间,只需按照特定数据格式进行排列即可,减少了数据处理的步骤,提升了运算效率;
2.本发明中的CPU旨在BDD操作进行运算,只涉及通用CPU的部分计算功能,可减少电路的使用面积与能耗;其IRAM(或ROM)、DRAM、SRAM、HRAM、针对性数据布局,可解决流水线结构相关问题,使BDD在操作上逻辑更为简洁;
3.本发明中的指令系统将数据处理指令与地址处理指令分开,将传统32位MIPS指令集中部分指令按数据与地址处理进行拆分,缩短指令的执行周期,可在设计流水线时减少时钟周期的浪费;针对操作算法自主设计的指令在一定程度上减少了逻辑运算的步数;使用汇编语言可对硬件资源进行准确操作,这三个方面都加快了操作运算速度;
4.本发明可使用FPGA(Field-Programmable Gate Array)芯片作为内核载体,具有较强的移植性,适用于通用CPU与FPGA协作场合。
附图说明
图1为本发明技术流程图。
图2为本发明面向BDD操作系统的工作原理。
图3为本发明提出的数据结构的生成原理图。
图4为本发明操作对象的BDD树操作级结果示意图。
图5为本发明所提出数据结构的BDD操作算法程序框图。
为表述方便,下面给出一些符号表示:
AOP(Address offset parameters) 节点地址偏移量
Level 节点等级
Low 节点左分支指向
High 节点右分支指向
IRAM 程序存储器
DRAM 数据存储器
SRAM 堆栈存储器
HRAM 哈希(hash)存储器
SDRAM 同步动态随机存储器
具体实施方式
一种面向符号BDD操作的CPU设计方法,如图1所示,包括步骤如下:
步骤A.依据BDD树结构与属性,设计合理的BDD数据结构、存储方式、以及递归映射方式;
步骤A1.为每个节点分配四个属性值,分别为AOP、level、low、high,level对应点的变量值;AOP表示点对应点的地址偏移参数;low与high分别为节点的两个分支指向,指向子节点的AOP值;
步骤A2.利用四个存储单元数值分别表示节点的每个属性;
步骤A3.hash值由两个操作点的AOP值填充;
步骤A4.以叶节点作为初始地址,其后以深度优先原则确定步骤A1提出的数据结构对BDD树的表达形式;
步骤B.分析步骤A提出BDD数据的操作过程,总结BDD数据操作规律,生成新型BDD数据操作算法;
步骤B1.将BDD对象转化为步骤A中提出的BDD数据;
步骤B2.分析BDD数据操作过程,总结所提出数据结构的操作规则;
步骤B21,每组hash值表示两个点的操作,其操作结果是其父节点的一个分支值(根节点除外),每连续的两组hash值操作结果表示一个节点的low和high值,hash值的组数为非叶节点总数的两倍,即可依据读取hash值次数来确定补充父节点分支指向的位置与顺序;
步骤B22,两点操作,当不存在支配点时,需生成一个新节点的level值和AOP值,将AOP值对其父节点进行补充,同时,生成两组hash值,按照先low后high的顺序存储;
步骤B23,当存在支配点时,无需生成新节点,只需计算操作值,补充父节点分支指向;
步骤B24,由于节点生成顺序为由根至叶,为防止叶节点地址的不定性,需提前固定叶节点地址,写入叶节点;
步骤B25,操作中可能产生重复节点,对应hash表中不同组相同,为维持步骤B21规律,应保留重复hash值,待读取该值时检测重复组,避免部分重复点生成;
步骤B26,操作过程可能仍存在重复节点,需在非叶节点生成完毕后,由高向低等级对比检查,若存在重复节点,则修改父节点指向;
步骤B27,非叶节点生成完毕,标记冗余节点,修改父节点指向;
步骤B28,规则R26和R27可能产生新的重复节点或冗余节点,需重复检测,直至两者都不存在为止。
步骤B3.依据步骤B2总结的规则,生成新型BDD操作算法;
步骤B31,将所生成的BDD数据存入DRAM中,记录所操作每个树的初始地址以及节点个数,初始化各存储器指针;
步骤B32,取出两个树的根节点进行操作,分析节点中是否存在支配点,若存在支配点,则操作结束,写入操作结果;若不存在支配值,则生成新节点AOP值与level值,生成两组hash值存入HRAM;
步骤B33,判断是否剩余hash值,若无剩余,则节点生成完毕,跳转至步骤B36;若有剩余,则读取hash值,记录读后hash地址值,记录读取hash值次数;
步骤B34,检测该组hash值与已读过的hash值是否重复,若重复,读取重复hash值所对应的节点单元,读入该节点AOP值用于补充重复节点的父节点;若不重复,则将读入的hash值转化为节点地址,读取所指向的两个节点;
步骤B35,分析节点组,判断是否存在支配点,若存在,则计算操作值,补充父节点分支指向,跳转至步骤B33;若不存在支配点,则生成新节点的level与AOP值,生成子节点操作的两组hash值写入hash表中,跳转至步骤B33;
步骤B36,查询重复节点,从高等级节点开始,标记重复节点,修改对应父节点指向;
步骤B37,检测冗余节点,从高等级节点开始,标记冗余节点,同时修改其父节点指向;
步骤B38,重复步骤B36和步骤B37,直到没有重复节点和冗余节点为止,简化结束,操作完毕。
步骤C.针对BDD操作算法设计指令,生成专用指令系统;利用专用指令系统描述步骤B所生成的操作算法。
步骤C1.选取32位MIPS指令格式作为参照,自主设计MIPS格式的专用指令;
步骤C2.对步骤B生成的操作算法进行汇编描述;
步骤C3.将步骤C2所用到的指令汇总,生成专用指令系统,并对该系统指令进行分类;
步骤C4.利用总结出的系统指令,将步骤C2描述的程序转化为机器指令。参见表1所示为所生成的专用系统指令集。
表1
步骤D.依据步骤C生成的指令系统,利用HDL(Hardware Description Language,硬件描述语言)设计专用型CPU内核与构架,组成完整的CPU结构,输入测试程序进行功能验证;
步骤D1.利用HDL的IP核生成虚拟存储器IRAM、DRAM、SRAM、HRAM四个模块,自定义各模块功能接口,定义通用寄存器堆;
步骤D2.依据步骤C生成的指令系统,设计CPU控制模块;
步骤D3.增设指令状态寄存器,设计3级循环流水线内核,处理数据相关与控制相关问题;
步骤D3.组合各个功能模块,形成完整的CPU构架,仿真检测CPU基本功能;
步骤D4.外设接口设计,输入缓冲区设计程序,仿真检测缓冲区功能,缓冲区与CPU连接,撰写驱动程序;
步骤D5.CPU与上位机连接,输入简易操作系统以及BDD操作算法程序;
步骤D6.输入操作对象BDD数据包,运行操作算法的程序,进行功能验证与调试。
步骤E.硬件实现步骤D设计的CPU,定义外设接口,连接上位机通信,构成面向符号BDD操作的CPU加速运算系统。
步骤E1.保留CPU内核与缓冲区,定义核外围模块接口引脚以及缓冲区模块接口引脚;
步骤E2.综合步骤E1更改的CPU构架,下载至FPGA芯片;
步骤E3.用独立的flash存储器连接步骤E1所定义的CPU的程序存储器接口;
步骤E4.用三个独立的SDRAM模块连接步骤E1定义的核外围模块(包括DRAM、SRAM、HRAM)引脚;
步骤E5.将上位机连接步骤E1定义的缓冲区接口,组成专用计算系统;
步骤E6.输入简易操作系统以及BDD操作算法程序至flash存储器,进行功能验证与优化。
本发明所设计面向BDD操作的CPU及其运算系统其工作过程可分为三个阶段:阶段I上位机将操作算法程序存入专用CPU的程序存储器,将生成的数据包输入至专用CPU的DRAM;阶段II专用CPU运行操作算法程序,计算操作结果存入DRAM;阶段III将操作结果输出至上位机,供用户使用。
上述三个阶段分别对应了面向符号BDD操作的计算系统的三大单元:数据生成单元、CPU内核控制单元和BDD操作运算单元。即一种面向符号BDD操作的计算系统,如图2所示,包括数据生成单元、CPU内核控制单元和BDD操作运算单元。
1)数据生成单元:可将操作对象转化为本发明提出的新型结构的BDD数据,可将该数据传入专用运算系统;
2)面向BDD操作的CPU内核控制单元:可完成特殊指令系统的每条指令任务,控制BDD操作运算;
3)BDD操作运算单元:在内核控制单元基础上组合了外围模块、可进行完整BDD数据的操作运算及存储,并将计算结果输出至外部设备或上位机。
下面通过一个具体实例,对本发明进行进一步详细说明:
所述设计方法,包括如下步骤和内容:
步骤1,设计数据结构与hash表结构,包括如下步骤:
步骤1.1,图3所示,定义节点的四个属性,即AOP、level、low、high,其中level既是相应的等级值,也对应BDD变量,由根至叶等级由小到大,最高等级为叶节点等级;AOP表示点的偏移参数;用于确定点所在的地址,low与high分别指向子节点的AOP值,即每个点的首地址;
步骤1.2,利用每半字节表示每个点的每个属性,每个节点为一个双字节,容量为64bit,最多可表示6.5万个点,规定使用每个存储单元16bit的存储器;
步骤1.3,为每组hash值分配两个存储单元,用于存储不同树之间的操作记录,hash值由两个操作点的AOP值填充,每组hash值为一个字节,用于查找操作子节点;
步骤1.4,确定对BDD树的表达形式,先填充叶节点,随后从根节点开始排列,hash表的读写顺序相同,当读与写的指针相同且无后续hash值时,意味着操作结束;
步骤2,将要操作的BDD目标(BDD树或布尔函数表达式)转化为本发明所提出的BDD结构的数据,本步骤引入实施例进行详细说明:
步骤2.1,将操作对象BDD树依据变量划分为不同的等级,依据叶节点等级最高原则,由根向叶从小到大划分等级;
步骤2.2,先写入两个叶节点为一个树的开始节点,并为两个叶节点分别赋值AOP为0和1,表示叶节点的0分支和1分支终点;
步骤2.3,将各点按等级顺序由小到大排列,分别规划为每个点的第二个单元level,每当写出一个新节点,对应节点分配AOP值在之前点加一;
步骤2.4,依据各节点分支指向,为每个节点补充low与high分支值;
步骤2.5,按照1.1-1.4步骤生成后续所要操作对象的BDD数据,同时记录每个BDD数据包的初始地址;
附注:对于BDD结构体链表式数据,利用路径查找逐一生成新结构节点数据包,在此不再赘述。
步骤3,操作规则设计,对BDD数据进行操作过程分析,图4对应着实施例一的BDD操作,总结操作过程规则,以加速操作运算,其规则如下:
步骤3.1,每组hash值表示两个点的操作,其操作结果是其父节点的一个分支值(根节点除外),每连续的两组hash值操作结果表示一个节点的low和high值,hash值的组数为非叶节点总数的两倍,即可依据读取hash值次数来确定补充父节点分支指向的位置与顺序;
步骤3.2,两点操作,当不存在支配点时,需生成一个新节点的level值和AOP值,将AOP值对其父节点进行补充,同时,生成两组hash值,按照先low后high的顺序存储;
步骤3.3,当存在支配点时,无需生成新节点,只需计算操作值,补充父节点分支指向;
步骤3.4,由于节点生成顺序为由根至叶,为防止叶节点地址的不定性,需提前固定叶节点地址,写入叶节点;
步骤3.5,操作中可能产生重复节点,对应hash表中不同组相同,为维持步骤3.1规律,应保留重复组hash值,待读取该值时检测重复组,避免部分重复点生成;
步骤3.6,操作过程可能任存在重复节点,需在非叶节点生成完毕后,由高向低等级对比检查,若存在重复节点,则修改父节点指向;
步骤3.7,非叶节点生成完毕,标记冗余节点,修改父节点指向;
步骤3.8,规则R3.6和R3.7可能产生新的重复节点或冗余节点,需重复检测,直至两者都不存在为止。
步骤4,依据总结的规则,图5表述了所生成对应数据结构的BDD操作算法,操作算法步骤包括:
步骤4.1,将所生成的BDD数据存入DRAM中,记录所操作每个树的初始地址以及节点个数,初始化各存储器指针;
步骤4.2,取出两个树的根节点进行操作,分析节点中是否存在支配点,若存在支配点,则操作结束,写入操作结果;若不存在支配值,则生成新节点AOP值与level值,生成两组hash值存入HRAM;
步骤4.3,判断是否剩余hash值,若无剩余,则节点生成完毕,跳转至步骤4.6;若有剩余,则读取hash值,记录读后hash地址值,记录读取hash值次数;
步骤4.4,检测该组hash值与已读过的hash值是否重复,若重复,读取重复hash值所对应的节点单元,读入该节点AOP值用于补充重复节点的父节点;若不重复,则将读入的hash值转化为节点地址,读取所指向的两个节点;
步骤4.5,分析节点组,判断是否存在支配点,若存在,则计算操作值,补充父节点分支指向,跳转至步骤4.3;若不存在支配点,则生成新节点的level与AOP值,生成子节点操作的两组hash值写入hash表中,跳转至步骤4.3;
步骤4.6,查询重复节点,从高等级节点开始,标记重复节点,修改对应父节点指向;
步骤4.7,检测冗余节点,从高等级节点开始,标记冗余节点,同时修改其父节点指向;
步骤4.8,重复步骤6和步骤7,直到没有重复节点和冗余节点为止,简化结束,操作完毕。
通过以上操作计算,实施例计算结果如图4所示,结果中level值为0表明该点为冗余节点,同时指向该点的父节点分支也将3修改为1。内存中的点单元即按该结果格式排列,通过输出程序可将该结果的有效部分输出给用户。
步骤5,生成专用指令系统,描述操作算法:
步骤5.1,选取32位MIPS指令格式作为本发明指令系统格式参照,自主设计MIPS格式的专用指令,依据处理对象不同,将指令分为数据类指令与地址类指令;
步骤5.2,自主设计的指令主要针对CPU构架的特殊性而设计,本发明将hash表、数据存储部分、堆栈部分分开布局,需增加在hash表中读/写数据的指令;
步骤5.3,为精简计算步数,生成特殊的操作指令,可根据操作类寄存器值的不同进行相应的计算。如:对于不同类型的操作“合取”与“析取”,cz指令可依据操作类寄存器值对节点进行“合取”与“析取”计算;
步骤5.4,利用所设计的专用指令系统描述生成的BDD操作算法,并依据指令系统格式生成机器指令。
步骤6.HDL生成CPU内核,设计CPU构架。
步骤6.1,利用HDL的IP核生成IRAM、DRAM、SRAM、HRAM四个模块,定义各模块功能接口,定义32个数据通用寄存器、32个地址通用寄存器;
步骤6.2,依据所生成的指令系统,设计CPU控制模块;包括各存储器数据的读/写,寄存器赋值、转移、计算,程序跳转、中断、函数调用等系列的指令的状态机,共同组合成CPU内核;
步骤6.3,增设指令状态寄存器,由于本发明将数据处理和地址处理指令进行了区分,故每条指令执行分为取指、分析、执行、写回四个阶段,由于取指和写回在大部分指令运行时互不相关,故可将取指和写回合并在同一个阶段中运行,故本发明设计一种3级循环流水线内核;
步骤6.4,处理数据相关与控制相关问题;对于数据相关问题使用前推机制以及延时等待共同解决,而控制相关则使用缓冲槽方式解决;
步骤6.5,组合各个功能模块,形成完整的CPU构架,输入简易程序,检测CPU运行指令的基本功能,其包括存储器读/写、寄存器移动、立即数赋值、计算、中断、函数调用、程序跳转、特殊指令。
步骤7,外设与CPU接口设计,组合与调试系统:
步骤7.1,利用HDL设计缓冲区模块,输入缓冲区设计程序,仿真检测缓冲区功能;
步骤7.2,建立CPU中断机制,将缓冲区与CPU连接,设计并写入设备驱动程序;
步骤7.3,CPU与PC上位机连接,将简易操作系统程序以及操作算法程序传入CPU的IRAM中;
步骤7.4,输入操作对象数据,运行操作算法的程序,对BDD操作算法进行功能验证。
步骤8,硬件实现面向BDD操作CPU及其运算系统:
步骤8.1,保留CPU内核与缓冲区,定义核外围模块接口引脚以及缓冲区模块接口引脚,其中将IRAM接口改为flash存储器类型接口;
步骤8.2,综合步骤8.1定义的CPU构架,下载到FPGA芯片;
步骤8.3,用独立的flash存储器连接步骤8.1所定义的IRAM接口引脚,以保存写入的操作算法程序;
步骤8.4,用三个独立的SDRAM模块连接步骤8.1定义的核外围模块(包括DRAM、SRAM、HRAM)引脚;
步骤8.5,将上位机连接步骤8.1定义的外设接口,组成专用计算系统;
步骤8.6,输入简易操作系统、BDD操作算法程序至flash存储器,功能验证与优化。
本发明通过用户上位机将操作对象转换,传输至所设计的专用BDD运算系统,通过系统内专用CPU运算机制对BDD数据进行操作计算,以达到快速运算的目的;通过建立新型BDD数据结构与对应操作算法,提高了BDD操作运算的效率。本发明能够在较高的算法效率以及较高的硬件处理效率下完成BDD操作计算任务,同时还能保证BDD数据的正确性和简洁性。
本发明能够在较高的算法效率下,完成BDD操作计算功能,可用于BDD操作的应用程序运行,保证其计算过程的快速性、正确性以及稳定系。
本说明书采用递进的方式描述,对每个方法及系统中的每个设计阶段依次详细地按步骤进行了说明。专业人员进一步意识到,结合本文中所公开的实施例各阶段能够以计算机软件(ISE)和电子硬件(FPGA)结合来实现。
通过结合附图对本发明具体实施例的描述,本发明的其他方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。

Claims (5)

1.一种面向符号BDD操作的CPU设计方法,其特征是,包括如下步骤:
步骤1.依据BDD树的结构与属性,定义BDD数据的结构、存储方式和递归映射方式;
步骤11.为每个节点分配四个属性值,分别为节点的等级值level、节点的地址偏移量值AOP、节点的左分支指向low和节点的右分支指向high;其中节点的左分支指向low和节点的右分支指向high均指向该节点的子节点地址偏移量值AOP;
步骤12.每组hash值由2个操作节点的地址偏移量值AOP填充;
步骤13.确定BDD树的表达形式,先根据步骤11填充BDD树的每个叶节点,随后根据步骤12从BDD树的根节点开始对BDD树的每个节点进行顺序排列;hash表的读写顺序与该排列相同,当读与写的指针相同且无后续hash值时,意味着操作结束;
步骤2.基于步骤1所定义的BDD数据的结构、存储方式和递归映射方式,生成BDD数据操作算法;
步骤21.将所生成的BDD数据存入数据存储器中,记录所操作每个BDD树的初始地址以及节点个数,初始化各个存储器指针;
步骤22.取出两个BDD树的根节点进行操作,分析节点中是否存在支配点,若存在支配点,则操作结束,写入操作结果;若不存在支配值,则生成新节点的地址偏移量值AOP与等级值level,生成两组hash值存入哈希存储器中;
步骤23.判断是否剩余hash值;若无剩余,则节点生成完毕,跳转至步骤26;若有剩余,则读取hash值,记录读后hash值,记录读取hash值次数;
步骤24.检测该组hash值是否存在支配点,若存在,则计算操作值并补充父节点,若不存在,则判断hash值是否重复;若重复,读取重复hash值所对应的节点单元,读入该节点地址偏移量值AOP用于补充重复节点的父节点;若不重复,则将读入的hash值转化为节点地址,读取所指向的2个节点;
步骤25.分析节点组;判断是否存在支配点,若存在,则计算操作值,补充父节点分支指向,跳转至步骤23;若不存在支配点,则生成新节点的等级值level与地址偏移值AOP,生成子节点操作的两组hash值写入hash表中,跳转至步骤23;
步骤26.查询重复节点,从高等级节点开始,标记重复节点,修改对应父节点指向;
步骤27.检测冗余节点,从高等级节点开始,标记冗余节点,同时修改其父节点指向;
步骤28.重复步骤26和步骤27,直到没有重复节点和冗余节点为止,简化结束,操作完毕;
步骤3.针对步骤2生成的BDD操作算法设计专用指令系统,并利用专用指令系统描述步骤2所生成的BDD数据操作算法;
步骤4.依据步骤3生成的指令系统,利用Xilinx平台设计与验证CPU内核与构架的功能,组成完整的CPU结构。
2.根据权利要求1所述的一种面向符号BDD操作的CPU设计方法,其特征是,步骤3具体为:
步骤31.依据步骤2生成BDD数据操作算法,在已有针对数据存储器指令下,新增针对哈希存储器的读写指令,包括lth、llth、rth和lrth这4条指令;
步骤32.加入地址处理指令,该地址处理指令的处理目标只包括地址类寄存器,包括padd、padds、psub和psubs这4条指令;
步骤33.设计连读与连写指令,该连读与连写指令针对连续两次以上且五次以下连读与连写的情况,包括llth、lrth、lltr和lrtr这4条指令;
步骤34.设计对应特殊指令,包括叶节点判断指令yjd、操作类型定义指令cz和节点操作指令scz;I
步骤35.新增空指令nop;
步骤36.补充计算类与转移类指令;
上述lth表示Hash存储器读数据rs<=dout,llth表示Hash存储器连续四个单元值顺序读入r1~r4四个寄存器,rth表示Hash存储器写入寄存器值hin<=rs,lrth表示Hash存储器连续四个单元顺序写入r1~r4四个寄存器值,padd表示地址寄存器加运算pd<=ps+pt,padds表示地址寄存器加立即数pd<=ps+im,psub表示地址寄存器减运算pd<=ps–pt,psubs表示地址寄存器减立即数pd<=ps–im,lrth表示Hash存储器连续四个单元顺序写入r1~r4四个寄存器值,lltr表示数据存储器连续四个单元顺序读入r1~r4四个寄存器值,lrtr表示数据存储器连续四个单元顺序写入r1~r4四个寄存器值。
3.根据权利要求1所述的一种面向符号BDD操作的CPU设计方法,其特征是,步骤4具体为:
步骤41.依据步骤2生成BDD数据操作算法,设立数据存储器、哈希存储器、程序存储器和堆栈存储器;
步骤42.分别分配31个地址寄存器与数据寄存器,备用于程序调用,另设通用寄存器组以备数据值与地址值之间转换;
步骤43.统计各个寄存器与每个指令之间的操作状态机,将该状态机利用硬件描述语言进行描述,生成CPU的控制内核;
步骤44.依据地址单独处理机制,每个指令由取指、分析、执行和写回4个步骤完成;CPU主要采取3级循环流水线机制;连读与连写指令类型采用6级流水线结构;
步骤45.利用软件IP核生成器生成四个存储模块,分别对应步骤41的数据存储器、哈希存储器、程序存储器和堆栈存储器,以对所组成的完整的CPU结构输入测试程序进行功能验证的过程。
4.根据权利要求1所述的一种面向符号BDD操作的CPU设计方法,其特征是,步骤4之后,还进一步包括如下步骤:
步骤5,通过硬件实现步骤4所设计的CPU,定义外设接口,连接上位机通信,由此构成面向符号BDD操作的CPU加速运算系统。
5.实现权利要求1所述面向符号BDD操作的CPU设计方法的一种面向符号BDD操作的计算系统,其特征是,包括数据生成单元、CPU内核控制单元和BDD操作运算单元,其中:
数据生成单元,将BBD操作对象转化为BDD数据,并将该数据传入BDD操作运算单元;
CPU内核控制单元,完成指令系统的每条指令任务,控制BDD操作程序运行;
BDD操作运算单元,CPU内核控制单元基础上组合外围模块,进行完整BDD数据的操作运算及存储,并将计算结果输出至外部设备或上位机。
CN201610190855.4A 2016-03-30 2016-03-30 一种面向符号bdd操作的cpu设计方法及计算系统 Expired - Fee Related CN105893660B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610190855.4A CN105893660B (zh) 2016-03-30 2016-03-30 一种面向符号bdd操作的cpu设计方法及计算系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610190855.4A CN105893660B (zh) 2016-03-30 2016-03-30 一种面向符号bdd操作的cpu设计方法及计算系统

Publications (2)

Publication Number Publication Date
CN105893660A CN105893660A (zh) 2016-08-24
CN105893660B true CN105893660B (zh) 2018-10-19

Family

ID=57014719

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610190855.4A Expired - Fee Related CN105893660B (zh) 2016-03-30 2016-03-30 一种面向符号bdd操作的cpu设计方法及计算系统

Country Status (1)

Country Link
CN (1) CN105893660B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107463447B (zh) * 2017-08-21 2019-10-11 中国人民解放军国防科技大学 一种基于远程直接非易失内存访问的b+树管理方法
CN112860318A (zh) * 2021-01-29 2021-05-28 成都商汤科技有限公司 一种数据传输方法、芯片、设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000013113A1 (en) * 1998-08-27 2000-03-09 Configit Software Aps A data structure and its use
US6313666B1 (en) * 1996-04-16 2001-11-06 Hitachi, Ltd. Logic circuit including combined pass transistor and CMOS circuit and a method of synthesizing the logic circuit
CN101739235A (zh) * 2008-11-26 2010-06-16 中国科学院微电子研究所 将32位dsp与通用risc cpu无缝混链的处理器装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6313666B1 (en) * 1996-04-16 2001-11-06 Hitachi, Ltd. Logic circuit including combined pass transistor and CMOS circuit and a method of synthesizing the logic circuit
WO2000013113A1 (en) * 1998-08-27 2000-03-09 Configit Software Aps A data structure and its use
CN101739235A (zh) * 2008-11-26 2010-06-16 中国科学院微电子研究所 将32位dsp与通用risc cpu无缝混链的处理器装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Efficient Parallel GPU Algorithms for BDD Manipulation;Congguang Yang;《Design Automation Conference (ASP-DAC), 2014 19th Asia and South Pacific》;20140120;1-6 *
基于 OBDD 的描述逻辑εL 循环术语集推理;古天龙 等;《软件学报》;20140131;第25卷(第1期);1-14 *
实现最优BDD结构的联合改进方法;罗航 等;《电子科技大学学报》;20120131;第41卷(第1期);1-6 *

Also Published As

Publication number Publication date
CN105893660A (zh) 2016-08-24

Similar Documents

Publication Publication Date Title
Ubal et al. Multi2Sim: A simulation framework for CPU-GPU computing
CN104615488B (zh) 异构多核可重构计算平台上任务调度的方法和装置
US8930892B2 (en) System and method for computational unification of heterogeneous implicit and explicit processing elements
WO2021000970A1 (zh) 深度学习算法的编译方法、装置及相关产品
CN103699360B (zh) 一种向量处理器及其进行向量数据存取、交互的方法
JPH02183362A (ja) コンピュータシステム
Beard et al. RaftLib: A C++ template library for high performance stream parallel processing
Ravi et al. Hints to accelerate symbolic traversal
CN104375805A (zh) 采用多核处理器仿真可重构处理器并行计算过程的方法
WO2020083050A1 (zh) 一种数据流处理方法及相关设备
WO2021000971A1 (zh) 操作数据的生成方法、装置及相关产品
CN102073480B (zh) 基于时分复用实现多核处理器内核模拟的方法
CN105893660B (zh) 一种面向符号bdd操作的cpu设计方法及计算系统
CN106293736B (zh) 用于粗粒度多核计算系统的两级编程装置及其计算方法
Sampson Process-oriented patterns for concurrent software engineering
Teng et al. Hardware implementation of random forest algorithm based on classification and regression tree
Najjar et al. ROCCC 2.0
US20120296623A1 (en) Machine transport and execution of logic simulation
US20230325312A1 (en) Merging Buffer Access Operations in a Coarse-grained Reconfigurable Computing System
US20230297349A1 (en) Bandwidth-Aware Computational Graph Mapping
WO2021000638A1 (zh) 深度学习算法的编译方法、装置及相关产品
Xie Towards a New Design and Execution Framework for SystemGALS
Kuper et al. Improving GPU Utilization in ML Workloads Through Finer-Grained Synchronization
Barringer et al. Rainbow: development, simulation and analysis tools for asynchronous micropipeline hardware design
US20130212363A1 (en) Machine transport and execution of logic simulation

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20181019

CF01 Termination of patent right due to non-payment of annual fee