基于优化遗传算法改进软硬件划分效率的技术实现方法

文档序号:6358806阅读:191来源:国知局
专利名称:基于优化遗传算法改进软硬件划分效率的技术实现方法
技术领域
大规模集成电路设计技术专项领域,尤其是SOC(系统集成)设计,电子设计自动化(EDA)中系统划分领域。
背景技术
在过去几年里,集成电路工艺已从亚微米进入到了深亚微米(DSM)甚至是超深亚微米(VDSM)阶段,而设计规模也进入到了超大规模(VLSI)向甚大规模ULSI方向发展。工业界和学术界开始集中注意力到系统级设计。与设计过程相关的电子设计自动化工具(EDA)在实现功能和处理方式上也要随着设计技术的发展而改进。
近些年软硬件协同设计的思想得以提出就是为了解决传统设计过程中靠直觉和经验来整体规划整个系统结构时存在的一些明显的缺陷(1)由于现代系统中软件所占比重越来越大,系统变得越来越复杂,依靠经验和直觉已不可能得到系统的优化结构。(2)在传统的系统级设计过程中,没有对系统软硬件进行集成测试设计缺陷。
软硬件协同设计是指软硬件并发设计,软件、硬件工程师协作开发的过程。在设计早期、在系统级就能进行软硬件的结构权衡分析、集成调试。通常系统设计者、客户和市场部门一起定义要求、开发系统说明和划分系统,接下来软件工程师、硬件工程师并发设计,协作开发。软硬件协同设计的整体目标就是要建立一个支持系统说明、软硬件划分、软硬件协同验证和软硬件协同综合的统一设计方法。
在软硬件协同设计中,通常需要考虑许多方面的问题。例如系统的说明与建模、不同系统的协同仿真、系统的软硬件划分、系统的软硬件协同综合、软硬件的协同验证、系统优化等。软硬件划分是软硬件协同设计的一个非常关键的问题,直接影响系统的性能。软硬件划分就是把系统的功能基本块映射到目标系统的部件基本块上的过程。在整个划分过程中要解决下面几个关键问题确定划分所基于的粒度大小、得到划分过程所需要的数据信息、构造耗费函数和设计划分算法。
目前,出现了许多软硬件划分方法。它们的不同之处主要体现在如下几个方面系统的初始化说明、划分过程中所基于的粒度大小、划分过程的自动化程度、耗费函数(Cost function)的构造方法、划分算法的设计。目前较好的算法有混合型整数规划法,模拟退火法,禁忌搜索法,遗传算法等,但是这些算法在划分处理速度,以及划分的自动化程度,划分的细度都有自身的缺陷,目前迫切的需要可行的综合性技术方法能够改进上述技术的缺陷。

发明内容
本发明在于提出一种基于遗传算法的新的技术改进方法,它的总体思路是先通过数据输入预处理,创造性引入模块间的紧密性度量的概念,通过紧密性度量再利用层次结群算法将最初的划分图生成层次结点树,初始个体生成后通过本发明引入的选择策略来对交配算子变异算子保存最佳个体,最后通过判殓规则,若不收敛则返回重新进行策略选择;本发明的特征在于含以下的步骤(1)读入系统的功能描述即SystemC或VHDL语言。它描述了功能正确的系统的一个有效实现,但还没有进行软硬件模块的划分。在这里还应读入对系统性能要求的限制文件。
(2)编译与模块提取对于SystemC或VHDL的语言描述,在进程级进行模块提取,得到系统的模块连接图,并且评估模块的计算负载和模块间的通信量等,作为划分的数据,标注在模块连接图的结点和边上。
(3)计算模块间的紧密性度量基于模块连接图的结点和边的紧密性为紧密性度量(closeness),它由两项组成连接性(connectivity)和平衡面积(balancedize)。其中closeness=0.5×connectivity+0.5×balancedsize由两结点间的连接性与边的权值成正比与外部边数成反比,可定义两结点间连接性为内部连接边的权值比上外部边的权值和connectivity=CijΣk≠jCik+Σk≠iCjk]]>对结点进行结群时需要各结群间的大小保持平衡。我们定义balancedsize=|V|-(|Vi|+|Vj|)|V|]]>两结群面积|Vi|,|Vj|;平衡面积balancedsize;总面积|V|结群面积和越小,平衡面积值就越大。
(4)进行层次结群操作依据模块间的紧密性度量,对模块连接图的结点进行多路结群操作,生成层次结点树。采用8路结群算法。
(a)closeness<T时,结束结群循环,(紧密性度量的阈值T=0.3),剩下的结点形成层次划分图的根结点。
(b)合并两结点以生成复杂结点i)以两结点为子结点生成一个新的复杂结点,ii)其中一个结点为复杂结点,则可将另一结点合并成该复杂结点的一个新的子结点。
引入合并概率pa=0.8,pa的值越小,产生的复杂结点就越多,层次结点树就越高。
(5)初始个体生成将层次结点树生成一棵层次生成树(a)点树的结点进行编号,依据树的前序遍历来确定结点的号码。实现以层次结点树的根结点root调用SelectNode函数。该函数以递归的方式对层次结点树进行深度遍历,保证生成个体中结点的顺序排列。
(b)择复杂结点来构成层次划分图以实现初始划分中减少搜索空间的目标。
(i)群体粒度控制概率pi=0.7,以概率pi将复杂结点选入层次划分图(大的概率使初始群体保持在粗粒度上)不再对其子分枝进行遍历。
(ii)若复杂结点被扩展,则逐个处理其兄弟结点使所有兄弟结点都在生成树中。多个初始个体形成初始种群。
Algorithmgenerate initial individual1 Procedure SelectNode(node)2 if node is simple node then3 select it to HPG4else if random()<pi then5 select it to HPG6else7 for each subnode of node do8 SelectNode(subnode)9 end for10 end if11 end procedure12 SelectNode(root);(6)产生的种群进行选择操作本发明基于堵轮算子,排序选择算子引入组合选择策略每次计算迭代种群的方差a)如果方差大于某一个值时采用排序选择算子(避免种群中的个体都是适应度比较好的个体)按奇数或偶数位选取一半个体,余下的一半采用赌轮法来选取
b)如果方差小于某一个值时用锦标赛策略。
(7)剩余步骤接下来交配操作→变异操作→保存最佳个体→判断遗传算法是否收敛,否,则返回步骤(6),是则算法结束,输出最佳个体,即找到优化解。
(a)混合粒度遗传算法中交配操作采用标准的交配算子,对算子做避免产生无效交配位置的调整。
(b)变异操作有两种方法I)称为映射变异,即改变结点所映射的硬软件实现集合。这种变异类型等同于标准遗传算法的变异算子,其产生的新个体仍处于原搜索空间中。
II)称为粒度变异,即若变异结点是层次结点,则变异算子可用该结点的下一层子结点来替代该结点。


图1 混合粒度遗传算法流程图(其中1为划分图,2为层次结群算法,3为层次结点树,4为层次划分图,5为混合粒度遗传算法,6为划分集合)图2 层次结群算法示例图3 种群选择操作示意4 软硬件自动划分、自动分配的软件工具的设计流程图5 6502示例的模块划分图。
图6 6502示例的层次结点树图7 6502示例的软硬件划分结果
具体实施例方式在SOC设计中由于设计的复杂性,设计人员不可能自底向上来构造系统的结构,必须全局来考虑系统的划分。系统的结构划分与优化通常转化为图的优化划分问题即基于一定的粒度大小,把系统的描述划分成模块,然后考虑模块的计算负载和块间的通信量,进而得到一个带权重的图。基于用户的约束条件来划分这个图,使得目标函数达到最优。确定划分所基于的粒度大小、得到划分过程所需要的数据信息、构造耗费函数和设计划分算法的相关技术方案是本发明的技术核心,结合示意图来阐明这套技术如图1示意了混合粒度遗传算法的设计流程。
(1)得到系统最初的细粒度划分图。
(2)用层次结群算法,把最初的划分图生成层次结点树,即把结点进行层次结群。由程序Hypergraph.java来完成。
(3)结点树生成层次划分图,每个划分图就是系统的一种划分,它中间含有细粒度结点,也有由细粒度产生的粗粒度结点,即我们所说的混合粒度表示,由程序HypergraphSpicesjava来完成。这一步会产生多个划分图,作为混合粒度遗传算法的初始个体,即得到初始种群。
(4)利用改进的混合粒度遗传算法来进化初始种群,得到最后比较优化的划分集合。
本软硬件划分方法的流程框图如图3所示。
现在采用一个VHDL描述的6502处理器系统的例子作为本发明的一个实施例,结合图3的程序流程,用本发明的软硬件划分方法来进行系统划分。它依次包含如下步骤(1)读入系统的功能描述即读入文件6502.vhdl,它是VHDL语言描述,但还没有进行软硬件模块的划分。这一部分由程序VSX.cpp等来完成。
(2)编译与模块提取在进程级进行模块提取,得到系统的模块连接图,并且评估模块的计算负载和模块间的通信量等,作为划分的数据,标注在模块连接图的结点和边上。
这一部分由程序VXM.cpp等来完成,其中采用了“Petru Eles,Zebo Peng,Alexa Doboli.VHDL System-Level Specification and Partitioning in a Hardware/Software Co-SynthesisEnvironment,Proceeding of the Third International Workshop on Hardware/SoftwareCo-Design,September 1994,”的核心思想来实现这一步骤。可参见图4。其中模块数为67。边数为93。
(3)计算模块间的紧密性度量closeness=0.5×connectivity+0.5×balancedsizeconnectivity=CijΣk≠jCik+Σk≠iCjk]]>balancedsize=|V|-(|Vi|+|Vj|)|V|]]>这一部分由程序Hypergraph.java来完成。
(4)进行层次结群操作利用层次结群算法,依据模块间的紧密性度量,对模块连接图的结点进行多路结群操作生成层次结点树。层次结群的示意图可参见图2(层次结群算法的流程图)。它示意的是2路层次结群算法。通常采用K(K>2)路层次结群算法。
(a)计算出结点之间的紧密性度量,由程序Hypergraph.java来完成。
(b)根据结点的紧密性度量,找出最紧密的两个结点,把它们合并成一个新的结点,然后调整与新结点的紧密性度量。
(c)重复步骤(2)的工作,直到所有结点层次合并为一个结点时结束操作。这样我们就得到一棵层次结点树。
这一部分由程序Hypergraph.java来完成。其中采用了“F.Vahid,D.D.Gajski.Clusteringfor Improved System-Level Functional Partitioning.InProceedings of 8th InternationalSymposium on System Synthesis.1995.28~33.”中部分思想来实现这一步骤。
层次结群算法还有两个参数。
a)当closeness<T,结束结群循环,并用剩下的结点形成层次划分图的根结点。
b)在合并两结点以生成复杂结点时存在两种选择。
i)以两结点为子结点生成一个新的复杂结点,ii)若其中一个结点为复杂结点,则可将另一结点合并成该复杂结点的一个新的子结点。为此,引入合并概率pa,取值为0.8。pa的值越小,产生的复杂结点就越多,层次结点树就越高。
采用8路结群算法。产生的层次结点树如图6所示。由程序Hypergraph.java实现针对图5产生出来的层次结点树。。
(5)初始个体生成实现中,以层次结点树的根结点root调用SelectNode函数。该函数以递归的方式对层次结点树进行深度遍历,使生成个体中结点的顺序排列。当遇到复杂结点时,以概率pi将其选入层次划分图(大的概率使初始群体保持在粗粒度上),并不再对其子分枝进行遍历。若复杂结点被扩展,则逐个处理其兄弟结点,以保证所有兄弟结点都在生成树中。
这一部分由程序HypergraphSpices.java来完成。
(6)对产生的种群进行选择操作有了初始种群,接下来就是定义每个个体的适应度,并且读入系统的要求限制,把限制作为惩罚项加入到个体的适应度上,使得违背限制要求的个体的适应度差。得到每个个体的适应度之后,就是基于选择策略来选择下一代进化的个体。
由程序SelectionMethod.java来实现,其中采用了2002年《计算机辅助设计与图形学学报》中的由郑赟、黄国勇等署名的名为“通过遗传算法进行系统级软硬件划分”的算法。
(7)进行混合粒度遗传算法的余下操作做交配操作、变异操作、保存最佳个体和判断遗传算法是否收敛,否,则返回步骤(6),是,则算法结束,输出最佳个体,即找到的优化解。变异操作采用粒度变异,即若变异结点是层次结点,则变异算子可用该结点的下一层子结点来替代该结点。这一部分由HypergraphIndividual.java程序来完成,这一部分其中采用了“G.Quan,X.Hu,Greenwood.Preference-Driven Hierarchical Hardware/Software Partitioning.InProceedings of InternationalConference on Computer Design.1999.652~657.”中参考部分算法实现图5是由程序VXM.cpp产生出来的模块划分图,图6是产生的层次结点树。
最后的划分结果如图7所示,其中白色结点是产生激励的结点,不参与划分。浅颜色的结点为软件模块,深颜色的结点为硬件模块。
利用本发明的技术方法得到的目标函数的解为(-0.02935899)。而传统的遗传算法的解为(-0.012172744)。另外,本发明通过测试了许多实例,证明了方法的有效性。具体结果如下

本发明所用的硬件是一台Sun公司的Enterprise 450型工作站;使用Unix操作系统;通过这些过程的有效实现,开发出了相应的软硬件自动划分、自动分配的软件工具。
由此可见,本发明所述的软硬件划分技术有以下的优点1)根据本发明所定义粒度的紧密性概念利用层次结群算法得到划分图的层次结点树,使得细粒度的划分结果中有些粒度可以合并成粗粒度,能得到细粒度的划分结果,同时具有粗粒度的划分效率。
2)优化了层次结点树的构成,使得运行处理时间上要少。在软硬件划分的准确度及粒度划分的自动化程度优于一般的遗传算法,使得软硬件划分的执行效率得以提高。
3)创造性引入组合选择策略,优化了算子选择从而避免了传统遗传算法中“算法早熟”这一技术缺陷。
本发明的效用此发明将作为用于SOC集成电路系统级设计的EDA工具中的一个功能块,它将解决确定SOC系统级的描述语言、划分数据的提取技术、划分算法的设计三大关键技术。工具主要功能是进行SOC的行为定义、功能验证和软/硬件划分。对SOC设计进行功能验证和软/硬件划分后,就能得到系统的软件部分和硬件部分。利用这个工具,电子设计师在产品设计的早期、在系统级就能进行软硬件的结构权衡分析。通过性能评估和建模,根据设计约束条件,系统设计师利用此工具在系统级比较不同实现结构对产品性能的影响,从而进行设计结构的权衡分析、集成调试,从而加快产品开发速度,提高研发效率。随着集成电路SOC技术的发展,越来越迫切需要软硬协同设计技术来解决当前甚大规模集成电路设计所遇到的难题,因此该软件工具具有很好的应用前景。
另外,这些实现技巧还可应用到电路模块划分、布局规划、布局布线和验证等很多EDA工具中。
权利要求
1.一种基于遗传算法的软硬件划分技术的实现方法,含有模块间的紧密性度量、层次结群算法和遗传算法的加速等步骤。其特征在于它依次包含如下步骤(1)读入系统的功能描述即SystemC或VHDL语言。它描述了系统的功能实现。(2)编译与模块提取对于SystemC或VHDL的语言描述,在进程级进行模块提取,得到系统的模块连接图,并且评估模块的计算负载和模块间的通信量等,作为划分的数据。(3)计算模块间的紧密性度量基于模块连接图的结点和边信息,定义出模块的紧密性度量closeness=0.5×connectivity+0.5×balancedsizeconnectivity=CijΣk≠jCik+Σk≠iCjk,]]>其中Cij为结点i,j之间的连接边数。balancedsize=|V|-(|Vi|+|Vj|)|V|,]]>其中V为模块的面积。(4)进行层次结群操作利用层次结群算法,依据模块间的紧密性度量,对模块连接图的结点进行多路结群操作,生成层次结点树。(5)初始个体生成由于每个层次划分图都对应于一棵层次生成树,故初始个体的产生等价于如何由层次结点树生成一棵层次生成树。生成中需要注意两件事情。首先,对层次结点树的结点进行编号,依据树的前序遍历来确定结点的号码。层次划分图的结点应按顺序号排列。第二,为了实现初始划分中减少搜索空间的目标,应该尽量选择复杂结点来构成层次划分图。这里,引入初始群体粒度控制概率pi=0.7,表明复杂结点做为生成树中叶结点的可能性,从而控制初始群体的粒度。多个初始个体形成初始种群。(6)对产生的种群进行组合选择操作策略我们基于赌轮选择算子、排序选择算子和锦标赛选择算子的优缺点,提出了有效的组合选择策略。(7)进行混合粒度遗传算法的余下操作接下来就是交配操作、变异操作、保存最佳个体和判断遗传算法是否收敛,否则返回步骤(6),是,则算法结束,输出最佳个体,即找到的优化解。
2.根据权利要求1所述的基于遗传算法的软硬件划分技术的实现方法,其特征在于步骤(3)(4)采用了Hypergraph.java程序完成,其中采用了我们自己定义的紧密性度量和公知的“层次结群算法”。
3.根据权利要求1所述的基于遗传算法的软硬件划分技术的实现方法,其特征在于步骤(5)采用了程序完成HypergraphSpices.java。
4.根据权利要求1所述的基于遗传算法的软硬件划分技术的实现方法,其特征在于步骤(6)采用了SelectionMethod.java程序完成,其中采用了赌轮选择算子、排序选择算子和锦标赛选择算子的组合策略。
全文摘要
一种基于优化遗传算法改进软硬件划分效率的技术实现方法,含有模块间的紧密性度量、层次结群算法和遗传算法加速等步骤。其特征在于它依次包含如下步骤先通过数据输入预处理,创造性引入模块间的紧密性度量的概念,通过紧密性度量再利用层次结群算法将最初的划分图生成层次结点树,通过这种预处理之后,利用混合粒度的遗传算法,可以得到细粒度的划分结果,同时具有粗粒度的划分效率。初始个体生成后通过本发明引入的选择策略来对交配算子变异算子保存最佳个体,最后经由判殓规则,若不收敛则返回重新进行策略选择。发明的紧密性度量原则的技术方法在软硬件划分的准确度及粒度划分的自动化程度优于一般的遗传算法,并且在运行处理时间上要少。优化了层次结点树的构成,使得软硬件划分的执行效率得以提高。
文档编号G06F17/50GK1604304SQ03126498
公开日2005年4月6日 申请日期2003年9月29日 优先权日2003年9月29日
发明者郑赟, 王勇, 黄国勇 申请人:北京中电华大电子设计有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1