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

文档序号:10535109阅读:660来源:国知局
一种面向符号bdd操作的cpu设计方法及计算系统的制作方法
【专利摘要】本发明公开一种面向符号BDD操作的CPU设计方法及计算系统,包括:BDD数据结构设计、新型数据结构操作算法、专用指令系统设计、CPU内核与构架设计、BDD操作专用运算系统构建以及系统的硬件实现。本发明通过用户上位机将操作对象转换,传输至所设计的专用BDD运算系统,通过系统内专用CPU运算机制对BDD数据进行操作计算,以达到快速运算的目的;通过建立新型BDD数据结构与对应操作算法,提高了BDD操作运算的效率。本发明能够在较高的算法效率以及较高的硬件处理效率下完成BDD操作计算任务,同时还能保证BDD数据的正确性和简洁性。
【专利说明】
一种面向符号BDD操作的CPU设计方法及计算系统
技术领域
[0001] 本发明涉及计算机技术领域,具体涉及一种面向符号BDD(Binary Decision Diagram,二叉决策图)操作的CPU设计方法及计算系统。
【背景技术】
[0002] 符号BDD操作运算被应用于密码学、IP路由查找、装配序列规划化等领域,提高数 据处理的速度、保证运算结果的正确性及稳定性、减少硬件消耗与能耗是这些领域长期的 追求。
[0003] 目前提高BDD操作运算速度的方法主要有:
[0004] (1)基于0BDD方法:将BDD转化为0BDD,并进行精简转化为R0BDD,可减少数据存储 量以及计算量,可有效减少操作运算的时间。
[0005] (2)基于硬件加速方法:设计单独存储BDD节点的硬件模块,将用户程序嵌入上位 机来管理BDD所用该模块的指针,进而实现相应的操作功能,获得了一定的加速效果。
[0006] (3)基于NISC技术方法:在基于0BDD方法和基于硬件加速方法的基础上,利用NISC 编译器设计BDD操作应用程序的RTL模块,分别生成控制部分和数据模块,利用上位机传输 模块功能信息生成NISC处理器,进一步加速了该操作的运算。
[0007] 上述方法分别从算法优化和硬件功能模块两大方向对BDD操作运行进行了加速, 但仍存在利用高级语言运行操作程序时,使用的数据结构步骤繁多的问题。此外,这些方法 所用到的处理器和均是通用型处理器,在规定只完成特定的运算情况下,使用通用指令集 容易造成时间周期浪费现象。故在数据结构、指令系统、内核运算机制等方面,BDD操作都还 有加速的空间。

【发明内容】

[0008] 本发明提供一种面向符号BDD操作的CPU设计方法及计算系统,其能够进一步提高 BDD操作运算速度。
[0009] 为解决上述问题,本发明是通过以下技术方案实现的:
[0010] 一种面向符号BDD操作的CPU设计方法,包括如下步骤:
[0011]步骤1.依据BDD树的结构与属性,定义BDD数据的结构、存储方式和递归映射方式; [0012]步骤2.基于步骤1所定义的BDD数据的结构、存储方式和递归映射方式,生成BDD数 据操作算法;
[0013] 步骤3.针对步骤2生成的BDD操作算法设计专用指令系统,并利用专用指令系系统 描述步骤2所生成的BDD数据操作算法;
[0014] 步骤4.依据步骤3生成的指令系统,利用Xilinx平台设计与验证CPU内核与构架的 功能,组成完整的CPU结构。
[0015] 上述步骤1具体为:
[0016] 步骤11.为每个节点分配四个属性值,分别为节点的等级1 eve 1、节点的地址偏移 量AOP、节点的左分支指向1 o w和节点的右分支指向h i gh;其中节点的左分支指向1 o w和节点 的右分支指向high均指向该节点的子节点地址偏移量值A0P;
[0017]步骤12.每组hash值由2个操作节点的地址偏移量值A0P填充;
[0018] 步骤13.确定BDD树的表达形式,先根据步骤11填充BDD树的每个叶节点,随后根据 步骤12从BDD树的根节点开始对BDD树的每个节点进行顺序排列;hash表的读写顺序与该排 列相同,当读与写的指针相同且无后续hash值时,意味着操作结束。
[0019] 上述步骤2具体为:
[0020]步骤21.将所生成的BDD数据存入数据存储器DRAM中,记录所操作每个BDD树的初 始地址以及节点个数,初始化各存储器指针;
[0021]步骤22.取出两个BDD树的根节点进行操作,分析节点中是否存在支配点,若存在 支配点,则操作结束,写入操作结果;若不存在支配值,则生成新节点的地址偏移量值A0P与 等级值level,生成两组hash值存入哈希存储器HRAM中;
[0022]步骤23.判断是否剩余hash值;若无剩余,则节点生成完毕,跳转至步骤26;若有剩 余,贝U读取hash值,记录读后hash地址值,记录读取hash值次数;
[0023]步骤24.检测该组hash值是否存在支配点,若存在,则计算操作值并补充父节点, 若不存在,则判断hash值是否重复;若重复,读取重复hash值所对应的节点单元,读入该节 点地址偏移量值A0P用于补充重复节点的父节点;若不重复,则将读入的hash值转化为节点 地址,读取所指向的2个节点;
[0024] 步骤25.分析节点组;判断是否存在支配点,若存在,则计算操作值,补充父节点分 支指向,跳转至步骤23;若不存在支配点,则生成新节点的等级level与地址偏移量值A0P, 生成子节点操作的两组hash值写入hash表中,跳转至步骤23;
[0025] 步骤26.查询重复节点,从高等级节点开始,标记重复节点,修改对应父节点指向;
[0026] 步骤27.检测冗余节点,从高等级节点开始,标记冗余节点,同时修改其父节点指 向;
[0027] 步骤28.重复步骤26和步骤27,直到没有重复节点和冗余节点为止,简化结束,操 作完毕。
[0028] 上述步骤3具体为:
[0029]步骤31.依据步骤2生成BDD数据操作算法,在已有针对DRAM指令下,新增针对HRAM 的操作指令;
[0030]步骤32.为方便本发明BDD操作过程地址计算,加入地址处理指令,该类型的指令 的处理目标只包括地址类寄存器;
[0031 ]步骤33.为提高读取效率,设计连读/连写指令,该指令针对连续两次以上且五次 以下连续读/写的情况;
[0032]步骤34.为提高指令与BDD操作算法的契合度,设计对应特殊指令,包括叶节点判 断指令yjd、操作类型定义指令CZ、两个叶节点操作指令SCZ等;
[0033]步骤35.为解决程序之间的控制相关与数据相关问题,新增空指令nop;
[0034]步骤36.为确保BDD操作程序正常运行,补充部分计算类与转移类指令。
[0035] 上述步骤4具体为:
[0036]步骤41.依据步骤2生成BDD数据操作算法,所需的数据存储器与哈希映射分开设 立,故设立数据存储器DRAM与哈希存储器HRAM,而程序存储器IRAM不可或缺;同时,为方便 后续的功能扩展,还需加入堆栈存储器SRAM以待备用;
[0037]步骤42.总结所需要的数据寄存器、地址寄存器、计数器、累加器等寄存器;分别分 配31个地址寄存器与数据寄存器,备用于程序调用,另设通用寄存器组以备数据值与地址 值之间转换;
[0038]步骤43.统计各寄存器与每个指令之间的操作状态机,将该状态机利用硬件描述 语言进行描述,生成CPU的控制内核;而对于算法中未出现的状态机则无需硬件描述,以节 省空间资源;
[0039]步骤44.依据地址单独处理机制,每个指令由取指、分析、执行、写回四个步骤完 成,然而连续读/写指令则需要额外的执行周期,故本发明CPU主要采取3级循环流水线机 制,然而,连读/写指令内涵多执行阶段,执行完毕一条连读/写指令最多需要六个周期的时 间,故连读/写指令类型采用6级流水线结构;
[0040]步骤45.利用软件IP核生成器生成四个存储模块,分别对应步骤41的4个存储空 间,便于本发明设计的(PU功能的可行性验证。
[0041 ] 作为改进,步骤4之后,还进一步包括如下步骤:
[0042] 步骤5,通过硬件实现步骤4所设计的CPU,定义外设接口,连接上位机通信,由此构 成面向符号BDD操作的CPU加速运算系统。
[0043]基于上述方法的所述的一种面向符号BDD操作的计算系统,包括数据生成单元、 CHJ内核控制单元和BDD操作运算单元,其中:
[0044]数据生成单元,将BBD操作对象转化为BDD数据,并将该数据传入BDD操作运算单 元;
[0045] CPU内核控制单元,完成指令系统的每条指令任务,控制BDD操作程序运行;
[0046] BDD操作运算单元,CPU内核控制单元基础上组合外围模块,进行完整BDD数据的操 作运算及存储,并将计算结果输出至外部设备或上位机。
[0047]与现有技术相比,本发明具有如下特点:
[0048] 1.本发明提出的CPU构架只针对BDD操作算法而设计,其数据存储器DRAM只存储所 BDD数据,无需提前分配空间,只需按照特定数据格式进行排列即可,减少了数据处理的步 骤,提升了运算效率;
[0049] 2.本发明中的CPU旨在BDD操作进行运算,只涉及通用CPU的部分计算功能,可减少 电路的使用面积与能耗;其IRAM(或ROM)、DRAM、SRAM、HRAM、针对性数据布局,可解决流水线 结构相关问题,使BDD在操作上逻辑更为简洁;
[0050] 3.本发明中的指令系统将数据处理指令与地址处理指令分开,将传统32位MIPS指 令集中部分指令按数据与地址处理进行拆分,缩短指令的执行周期,可在设计流水线时减 少时钟周期的浪费;针对操作算法自主设计的指令在一定程度上减少了逻辑运算的步数; 使用汇编语言可对硬件资源进行准确操作,这三个方面都加快了操作运算速度;
[0051 ] 4.本发明可使用FPGA(Field-Programmable Gate Array)芯片作为内核载体,具 有较强的移植性,适用于通用(PU与FPGA协作场合。
【附图说明】
[0052]图1为本发明技术流程图。
[0053]图2为本发明面向BDD操作系统的工作原理。
[0054]图3为本发明提出的数据结构的生成原理图。
[0055]图4为本发明操作对象的BDD树操作级结果示意图。
[0056]图5为本发明所提出数据结构的BDD操作算法程序框图。
[0057]为表述方便,下面给出一些符号表示:
[0058] A0P(Address offset parameters)节点地址偏移量
[0059] Level 节点等级
[0060] Low 节点左分支指向
[0061] High 节点右分支指向
[0062] IRAM 程序存储器
[0063] DRAM 数据存储器
[0064] SRAM 堆栈存储器
[0065] HRAM 哈希(hash)存储器
[0066] SDRAM 同步动态随机存储器
【具体实施方式】
[0067] 一种面向符号BDD操作的CPU设计方法,如图1所示,包括步骤如下:
[0068]步骤A.依据BDD树结构与属性,设计合理的BDD数据结构、存储方式、以及递归映射 方式;
[0069] 步骤41.为每个节点分配四个属性值,分别为六0?、16¥61、1〇¥、111811,16¥61对应点 的变量值;A0P表示点对应点的地址偏移参数;low与high分别为节点的两个分支指向,指向 子节点的A0P值;
[0070]步骤A2.利用四个存储单元数值分别表示节点的每个属性;
[0071]步骤A3.hash值由两个操作点的A0P值填充;
[0072]步骤A4.以叶节点作为初始地址,其后以深度优先原则确定步骤A1提出的数据结 构对BDD树的表达形式;
[0073]步骤B.分析步骤A提出BDD数据的操作过程,总结BDD数据操作规律,生成新型BDD 数据操作算法;
[0074]步骤B1.将BDD对象转化为步骤A中提出的BDD数据;
[0075]步骤B2.分析BDD数据操作过程,总结所提出数据结构的操作规则;
[0076]步骤B21,每组hash值表示两个点的操作,其操作结果是其父节点的一个分支值 (根节点除外),每连续的两组hash值操作结果表示一个节点的1 ow和h i gh值,hash值的组数 为非叶节点总数的两倍,即可依据读取hash值次数来确定补充父节点分支指向的位置与顺 序;
[0077]步骤B22,两点操作,当不存在支配点时,需生成一个新节点的level值和A0P值,将 A0P值对其父节点进行补充,同时,生成两组hash值,按照先low后high的顺序存储;
[0078]步骤B23,当存在支配点时,无需生成新节点,只需计算操作值,补充父节点分支指 向;
[0079] 步骤B24,由于节点生成顺序为由根至叶,为防止叶节点地址的不定性,需提前固 定叶节点地址,写入叶节点;
[0080] 步骤B25,操作中可能产生重复节点,对应hash表中不同组相同,为维持步骤B21规 律,应保留重复hash值,待读取该值时检测重复组,避免部分重复点生成;
[0081] 步骤B26,操作过程可能仍存在重复节点,需在非叶节点生成完毕后,由高向低等 级对比检查,若存在重复节点,则修改父节点指向;
[0082]步骤B27,非叶节点生成完毕,标记冗余节点,修改父节点指向;
[0083] 步骤B28,规则R26和R27可能产生新的重复节点或冗余节点,需重复检测,直至两 者都不存在为止。
[0084]步骤B3.依据步骤B2总结的规则,生成新型BDD操作算法;
[0085]步骤B31,将所生成的BDD数据存入DRAM中,记录所操作每个树的初始地址以及节 点个数,初始化各存储器指针;
[0086]步骤B32,取出两个树的根节点进行操作,分析节点中是否存在支配点,若存在支 配点,则操作结束,写入操作结果;若不存在支配值,则生成新节点A0P值与level值,生成两 组hash值存入HRAM;
[0087] 步骤B33,判断是否剩余hash值,若无剩余,则节点生成完毕,跳转至步骤B36;若有 剩余,则读取hash值,记录读后hash地址值,记录读取hash值次数;
[0088] 步骤B34,检测该组hash值与已读过的hash值是否重复,若重复,读取重复hash值 所对应的节点单元,读入该节点A0P值用于补充重复节点的父节点;若不重复,则将读入的 hash值转化为节点地址,读取所指向的两个节点;
[0089]步骤B35,分析节点组,判断是否存在支配点,若存在,则计算操作值,补充父节点 分支指向,跳转至步骤B33;若不存在支配点,则生成新节点的level与A0P值,生成子节点操 作的两组hash值写入hash表中,跳转至步骤B33;
[0090]步骤B36,查询重复节点,从高等级节点开始,标记重复节点,修改对应父节点指 向;
[0091 ]步骤B37,检测冗余节点,从高等级节点开始,标记冗余节点,同时修改其父节点指 向;
[0092] 步骤B38,重复步骤B36和步骤B37,直到没有重复节点和冗余节点为止,简化结束, 操作完毕。
[0093] 步骤C.针对BDD操作算法设计指令,生成专用指令系统;利用专用指令系统描述步 骤B所生成的操作算法。
[0094] 步骤C1.选取32位MIPS指令格式作为参照,自主设计MIPS格式的专用指令;
[0095] 步骤C2.对步骤B生成的操作算法进行汇编描述;
[0096] 步骤C3.将步骤C2所用到的指令汇总,生成专用指令系统,并对该系统指令进行分 类;
[0097] 步骤C4.利用总结出的系统指令,将步骤C2描述的程序转化为机器指令。参见表1 所示为所生成的专用系统指令集。
[0098] 表 1
[0101 ] 步骤D?依据步骤C生成的指令系统,利用HDL(Hardware Description Language, 硬件描述语言)设计专用型CHJ内核与构架,组成完整的CPU结构,输入测试程序进行功能验 证;
[0102] 步骤D1.利用HDL的IP核生成虚拟存储器11^101^11、31^11、111^11四个模块,自定义 各模块功能接口,定义通用寄存器堆;
[0103]步骤D2.依据步骤C生成的指令系统,设计CPU控制模块;
[0104]步骤D3.增设指令状态寄存器,设计3级循环流水线内核,处理数据相关与控制相 关问题;
[0105] 步骤D3.组合各个功能模块,形成完整的CPU构架,仿真检测CPU基本功能;
[0106] 步骤D4.外设接口设计,输入缓冲区设计程序,仿真检测缓冲区功能,缓冲区与CPU 连接,撰写驱动程序;
[0107] 步骤D5. CPU与上位机连接,输入简易操作系统以及BDD操作算法程序;
[0108]步骤D6.输入操作对象BDD数据包,运行操作算法的程序,进行功能验证与调试。
[0109] 步骤E.硬件实现步骤D设计的CPU,定义外设接口,连接上位机通信,构成面向符号 BDD操作的CPU加速运算系统。
[0110] 步骤E1.保留CPU内核与缓冲区,定义核外围模块接口引脚以及缓冲区模块接口引 脚;
[0111] 步骤E2.综合步骤E1更改的CPU构架,下载至FPGA芯片;
[0112] 步骤E3.用独立的flash存储器连接步骤E1所定义的CPU的程序存储器接口;
[0113] 步骤E4.用三个独立的SDRAM模块连接步骤E1定义的核外围模块(包括DRAM、SRAM、 册AM)引脚;
[0114] 步骤E5.将上位机连接步骤El定义的缓冲区接口,组成专用计算系统;
[0115] 步骤E6.输入简易操作系统以及BDD操作算法程序至flash存储器,进行功能验证 与优化。
[0116] 本发明所设计面向BDD操作的CPU及其运算系统其工作过程可分为三个阶段:阶段 I上位机将操作算法程序存入专用CHJ的程序存储器,将生成的数据包输入至专用CHJ的 DRAM;阶段II专用CPU运行操作算法程序,计算操作结果存入DRAM;阶段III将操作结果输出 至上位机,供用户使用。
[0117]上述三个阶段分别对应了面向符号BDD操作的计算系统的三大单元:数据生成单 元、CHJ内核控制单元和BDD操作运算单元。即一种面向符号BDD操作的计算系统,如图2所 示,包括数据生成单元、CPU内核控制单元和BDD操作运算单元。
[0118] 1)数据生成单元:可将操作对象转化为本发明提出的新型结构的BDD数据,可将该 数据传入专用运算系统;
[0119] 2)面向BDD操作的CPU内核控制单元:可完成特殊指令系统的每条指令任务,控制 BDD操作运算;
[0120] 3)BDD操作运算单元:在内核控制单元基础上组合了外围模块、可进行完整BDD数 据的操作运算及存储,并将计算结果输出至外部设备或上位机。
[0121] 下面通过一个具体实例,对本发明进行进一步详细说明:
[0122] 所述设计方法,包括如下步骤和内容:
[0123] 步骤1,设计数据结构与hash表结构,包括如下步骤:
[0124] 步骤1.1,图3所示,定义节点的四个属性,即AOP、level、low、high,其中level既是 相应的等级值,也对应BDD变量,由根至叶等级由小到大,最高等级为叶节点等级;A0P表示 点的偏移参数;用于确定点所在的地址,low与high分别指向子节点的A0P值,即每个点的首 地址;
[0125] 步骤1.2,利用每半字节表示每个点的每个属性,每个节点为一个双字节,容量为 64bit,最多可表示6.5万个点,规定使用每个存储单元1613;[1:的存储器 ;
[0126] 步骤1.3,为每组hash值分配两个存储单元,用于存储不同树之间的操作记录, hash值由两个操作点的A0P值填充,每组hash值为一个字节,用于查找操作子节点;
[0127] 步骤1.4,确定对BDD树的表达形式,先填充叶节点,随后从根节点开始排列,hash 表的读写顺序相同,当读与写的指针相同且无后续hash值时,意味着操作结束;
[0128] 步骤2,将要操作的BDD目标(BDD树或布尔函数表达式)转化为本发明所提出的BDD 结构的数据,本步骤引入实施例进行详细说明:
[0129] 步骤2.1,将操作对象BDD树依据变量划分为不同的等级,依据叶节点等级最高原 贝1J,由根向叶从小到大划分等级;
[0130] 步骤2.2,先写入两个叶节点为一个树的开始节点,并为两个叶节点分别赋值A0P 为0和1,表示叶节点的0分支和1分支终点;
[0131] 步骤2.3,将各点按等级顺序由小到大排列,分别规划为每个点的第二个单元 level,每当写出一个新节点,对应节点分配A0P值在之前点加一;
[0132] 步骤2.4,依据各节点分支指向,为每个节点补充low与high分支值;
[0133] 步骤2.5,按照1.1-1.4步骤生成后续所要操作对象的BDD数据,同时记录每个BDD 数据包的初始地址;
[0134] 附注:对于BDD结构体链表式数据,利用路径查找逐一生成新结构节点数据包,在 此不再赘述。
[0135] 步骤3,操作规则设计,对BDD数据进行操作过程分析,图4对应着实施例一的BDD操 作,总结操作过程规则,以加速操作运算,其规则如下:
[0136] 步骤3.1,每组hash值表示两个点的操作,其操作结果是其父节点的一个分支值 (根节点除外),每连续的两组hash值操作结果表示一个节点的1 ow和h i gh值,hash值的组数 为非叶节点总数的两倍,即可依据读取hash值次数来确定补充父节点分支指向的位置与顺 序;
[0137]步骤3.2,两点操作,当不存在支配点时,需生成一个新节点的level值和A0P值,将 A0P值对其父节点进行补充,同时,生成两组hash值,按照先low后high的顺序存储;
[0138] 步骤3.3,当存在支配点时,无需生成新节点,只需计算操作值,补充父节点分支指 向;
[0139] 步骤3.4,由于节点生成顺序为由根至叶,为防止叶节点地址的不定性,需提前固 定叶节点地址,写入叶节点;
[0140]步骤3.5,操作中可能产生重复节点,对应hash表中不同组相同,为维持步骤3.1规 律,应保留重复组hash值,待读取该值时检测重复组,避免部分重复点生成;
[0141 ]步骤3.6,操作过程可能任存在重复节点,需在非叶节点生成完毕后,由高向低等 级对比检查,若存在重复节点,则修改父节点指向;
[0142] 步骤3.7,非叶节点生成完毕,标记冗余节点,修改父节点指向;
[0143] 步骤3.8,规则R3.6和R3.7可能产生新的重复节点或冗余节点,需重复检测,直至 两者都不存在为止。
[0144] 步骤4,依据总结的规则,图5表述了所生成对应数据结构的BDD操作算法,操作算 法步骤包括:
[0145] 步骤4.1,将所生成的BDD数据存入DRAM中,记录所操作每个树的初始地址以及节 点个数,初始化各存储器指针;
[0146] 步骤4.2,取出两个树的根节点进行操作,分析节点中是否存在支配点,若存在支 配点,则操作结束,写入操作结果;若不存在支配值,则生成新节点A0P值与level值,生成两 组hash值存入HRAM;
[0147] 步骤4.3,判断是否剩余hash值,若无剩余,则节点生成完毕,跳转至步骤4.6;若有 剩余,则读取hash值,记录读后hash地址值,记录读取hash值次数;
[0148] 步骤4.4,检测该组hash值与已读过的hash值是否重复,若重复,读取重复hash值 所对应的节点单元,读入该节点A0P值用于补充重复节点的父节点;若不重复,则将读入的 hash值转化为节点地址,读取所指向的两个节点;
[0149] 步骤4.5,分析节点组,判断是否存在支配点,若存在,则计算操作值,补充父节点 分支指向,跳转至步骤4.3;若不存在支配点,则生成新节点的level与A0P值,生成子节点操 作的两组hash值写入hash表中,跳转至步骤4.3;
[0150] 步骤4.6,查询重复节点,从高等级节点开始,标记重复节点,修改对应父节点指 向;
[0151 ]步骤4.7,检测冗余节点,从高等级节点开始,标记冗余节点,同时修改其父节点指 向;
[0152] 步骤4.8,重复步骤6和步骤7,直到没有重复节点和冗余节点为止,简化结束,操作 完毕。
[0153] 通过以上操作计算,实施例计算结果如图4所示,结果中level值为0表明该点为冗 余节点,同时指向该点的父节点分支也将3修改为1。内存中的点单元即按该结果格式排列, 通过输出程序可将该结果的有效部分输出给用户。
[0154] 步骤5,生成专用指令系统,描述操作算法:
[0155] 步骤5.1,选取32位MIPS指令格式作为本发明指令系统格式参照,自主设计MIPS格 式的专用指令,依据处理对象不同,将指令分为数据类指令与地址类指令;
[0156] 步骤5.2,自主设计的指令主要针对CPU构架的特殊性而设计,本发明将hash表、数 据存储部分、堆栈部分分开布局,需增加在hash表中读/写数据的指令;
[0157] 步骤5.3,为精简计算步数,生成特殊的操作指令,可根据操作类寄存器值的不同 进行相应的计算。如:对于不同类型的操作"合取"与"析取",cz指令可依据操作类寄存器值 对节点进行"合取"与"析取"计算;
[0158] 步骤5.4,利用所设计的专用指令系统描述生成的BDD操作算法,并依据指令系统 格式生成机器指令。
[0159] 步骤6. HDL生成CPU内核,设计CPU构架。
[0160] 步骤6.1,利用HDL的IP核生成11^11、01^11、31^11、服舰四个模块,定义各模块功能接 口,定义32个数据通用寄存器、32个地址通用寄存器;
[0161 ]步骤6.2,依据所生成的指令系统,设计CPU控制模块;包括各存储器数据的读/写, 寄存器赋值、转移、计算,程序跳转、中断、函数调用等系列的指令的状态机,共同组合成CPU 内核;
[0162] 步骤6.3,增设指令状态寄存器,由于本发明将数据处理和地址处理指令进行了区 分,故每条指令执行分为取指、分析、执行、写回四个阶段,由于取指和写回在大部分指令运 行时互不相关,故可将取指和写回合并在同一个阶段中运行,故本发明设计一种3级循环流 水线内核;
[0163] 步骤6.4,处理数据相关与控制相关问题;对于数据相关问题使用前推机制以及延 时等待共同解决,而控制相关则使用缓冲槽方式解决;
[0164] 步骤6.5,组合各个功能模块,形成完整的CPU构架,输入简易程序,检测CPU运行指 令的基本功能,其包括存储器读/写、寄存器移动、立即数赋值、计算、中断、函数调用、程序 跳转、特殊指令。
[0165] 步骤7,外设与CPU接口设计,组合与调试系统:
[0166] 步骤7.1,利用HDL设计缓冲区模块,输入缓冲区设计程序,仿真检测缓冲区功能;
[0167] 步骤7.2,建立CPU中断机制,将缓冲区与CPU连接,设计并写入设备驱动程序;
[0168] 步骤7.3,CPU与PC上位机连接,将简易操作系统程序以及操作算法程序传入CPU的 IRAM 中;
[0169] 步骤7.4,输入操作对象数据,运行操作算法的程序,对BDD操作算法进行功能验 证。
[0170] 步骤8,硬件实现面向BDD操作CPU及其运算系统:
[0171 ]步骤8.1,保留CPU内核与缓冲区,定义核外围模块接口引脚以及缓冲区模块接口 引脚,其中将IRAM接口改为flash存储器类型接口;
[0172] 步骤8.2,综合步骤8.1定义的CPU构架,下载至ijFPGA芯片;
[0173] 步骤8.3,用独立的flash存储器连接步骤8.1所定义的IRAM接口引脚,以保存写入 的操作算法程序;
[0174] 步骤8.4,用三个独立的SDRAM模块连接步骤8.1定义的核外围模块(包括DRAM、 SRAM、HRAM)引脚;
[0175] 步骤8.5,将上位机连接步骤8.1定义的外设接口,组成专用计算系统;
[0176] 步骤8.6,输入简易操作系统、BDD操作算法程序至flash存储器,功能验证与优化。
[0177] 本发明通过用户上位机将操作对象转换,传输至所设计的专用BDD运算系统,通过 系统内专用CPU运算机制对BDD数据进行操作计算,以达到快速运算的目的;通过建立新型 BDD数据结构与对应操作算法,提高了 BDD操作运算的效率。本发明能够在较高的算法效率 以及较高的硬件处理效率下完成BDD操作计算任务,同时还能保证BDD数据的正确性和简洁 性。
[0178]本发明能够在较高的算法效率下,完成BDD操作计算功能,可用于BDD操作的应用 程序运行,保证其计算过程的快速性、正确性以及稳定系。
[0179]本说明书采用递进的方式描述,对每个方法及系统中的每个设计阶段依次详细地 按步骤进行了说明。专业人员进一步意识到,结合本文中所公开的实施例各阶段能够以计 算机软件(ISE)和电子硬件(FPGA)结合来实现。
[0180]通过结合附图对本发明具体实施例的描述,本发明的其他方面及特征对本领域的 技术人员而言是显而易见的。
[0181]以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为只是示例性 的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。
【主权项】
1. 一种面向符号m)D操作的CPU设计方法,其特征是,包括如下步骤: 步骤1.依据m)D树的结构与属性,定义m)D数据的结构、存储方式和递归映射方式; 步骤2.基于步骤1所定义的BDD数据的结构、存储方式和递归映射方式,生成BDD数据操 作算法; 步骤3.针对步骤2生成的BDD操作算法设计专用指令系统,并利用专用指令系系统描述 步骤2所生成的BDD数据操作算法; 步骤4.依据步骤3生成的指令系统,利用Xilinx平台设计与验证CPU内核与构架的功 能,组成完整的CPU结构。2. 根据权利要求1所述的一种面向符号BDD操作的CPU设计方法,其特征是,步骤1具体 为: 步骤11.为每个节点分配四个属性值,分别为节点的等级值I eve 1、节点的地址偏移量 值AOP、节点的左分支指向1 〇 w和节点的右分支指向h i gh;其中节点的左分支指向1 〇 w和节点 的右分支指向high均指向该节点的子节点地址偏移量值Α0Ρ; 步骤12.每组hash值由2个操作节点的地址偏移量值AOP填充; 步骤13.确定BDD树的表达形式,先根据步骤11填充BDD树的每个叶节点,随后根据步骤 12从BDD树的根节点开始对BDD树的每个节点进行顺序排列;hash表的读写顺序与该排列相 同,当读与写的指针相同且无后续hash值时,意味着操作结束。3. 根据权利要求1所述的一种面向符号BDD操作的CPU设计方法,其特征是,步骤2具体 为: 步骤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,直到没有重复节点和冗余节点为止,简化结束,操作完 毕。4. 根据权利要求1所述的一种面向符号BDD操作的CPU设计方法,其特征是,步骤3具体 为: 步骤31.依据步骤2生成BDD数据操作算法,在已有针对数据存储器指令下,新增针对哈 希存储器的读写指令,包括1th、llth、rth和Irth这4条指令; 步骤32.加入地址处理指令,该类型的指令的处理目标只包括地址类寄存器,包括 padcUpadds、psub 和 psubs 这 4 条指令; 步骤33.设计连读与连写指令,该指令针对连续两次以上且五次以下连读与连写的情 况,包括11 th、Irth、11 tr和Irtr这4条指令; 步骤34.设计对应特殊指令,包括叶节点判断指令yjd、操作类型定义指令cz和节点操 作指令scz; I 步骤35.新增空指令nop; 步骤36.补充计算类与转移类指令。5. 根据权利要求1所述的一种面向符号BDD操作的CPU设计方法,其特征是,步骤4具体 为: 步骤41.依据步骤2生成BDD数据操作算法,设立数据存储器、哈希存储器、程序存储器 和堆栈存储器; 步骤42.分别分配31个地址寄存器与数据寄存器,备用于程序调用,另设通用寄存器组 以备数据值与地址值之间转换; 步骤43.统计各个寄存器与每个指令之间的操作状态机,将该状态机利用硬件描述语 言进行描述,生成CHJ的控制内核; 步骤44.依据地址单独处理机制,每个指令由取指、分析、执行和写回4个步骤完成;CPU 主要采取3级循环流水线机制;连读与连写指令类型采用6级流水线结构; 步骤45.利用软件IP核生成器生成四个存储模块,分别对应步骤41的数据存储器、哈希 存储器、程序存储器和堆栈存储器,以对所组成的完整的CPU结构输入测试程序进行功能验 证的过程。6. 根据权利要求1所述的一种面向符号BDD操作的CPU设计方法,其特征是,步骤4之后, 还进一步包括如下步骤: 步骤5,通过硬件实现步骤4所设计的CPU,定义外设接口,连接上位机通信,由此构成面 向符号BDD操作的CPU加速运算系统。7. 实现权利要求1所述面向符号BDD操作的CPU设计方法的一种面向符号BDD操作的计 算系统,其特征是,包括数据生成单元、CPU内核控制单元和BDD操作运算单元,其中: 数据生成单元,将BK)操作对象转化为K)D数据,并将该数据传入K)D操作运算单元; CHJ内核控制单元,完成指令系统的每条指令任务,控制K)D操作程序运行; BDD操作运算单元,CPU内核控制单元基础上组合外围模块,进行完整BDD数据的操作运 算及存储,并将计算结果输出至外部设备或上位机。
【文档编号】G06F17/50GK105893660SQ201610190855
【公开日】2016年8月24日
【申请日】2016年3月30日
【发明人】古天龙, 闵丰, 徐周波, 宁黎华, 常亮
【申请人】桂林电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1