一种算法加速的软硬件协同设计方法

文档序号:6483625阅读:121来源:国知局
专利名称:一种算法加速的软硬件协同设计方法
技术领域
本发明涉及一种设计方法,尤其涉及一种算法加速的软硬件协同设计方法。
它是基于硬件原型演化的网络安全RSA算法,属于集成电路、片上系统(SOC)、 嵌入式系统设计技术领域。
(二)
背景技术
软硬件协同设计不仅是一种设计技术,同时也是一种新的设计方法学,其 核心问题是协调软件子系统和硬件子系统。
软硬件协同设计的定义至今仍没有完全一致的表述,主要有以下几种
大卫.W .弗兰克(David W.Franke)与马丁 ■ K .帕维斯(Martin K. Purvis ) 认为"软硬件协同设计是一种在设计过程的最初阶段就将软件与硬件两个方面 结合起来考虑,以获得设计的灵活性与功能的有效分配的一种设计方法,有时 简称为协同设计。"
乔瓦尼.德 米切(Giovanni De Micheli)认为"软硬件协同设计是指通
综上所述,可以认为软硬件协同设计是一种在设计的最初阶段就将软件 与硬件两方面结合起来权衡功能的分配,在软件与硬件的并行设计过程中实现 软硬件的交互,以满足系统的功能与性能要求的设计方法。
片上系统(SOC)设计技术始于20世纪90年代中期,它是一种系统级的 设计技术。关于片上系统(SOC)目前还没有统一的定义,部分专家认为片上 系统(SOC)是一种复杂的集成电路,它将终端产品的主要功能单元完全集成 在单个芯片或芯片组中。通常片上系统(SOC)包括一个可编程处理器、片上 存储器和硬件实现的加速功能单元,片上系统(SOC)作为一个系统需要直接 与外部世界打交道,因此它一般还包括模拟部件以及数模混合部件,未来它还 可能会将光微电子机械系统(0/MEMS )部件集成在一起;有的专家则将片上系统 (SOC)定义为一种将多个超大规模集成电路(VLSI)设计集成在一起、针对
5某一种应用提供完全功能的集成电路。
软硬件协同设计国外的成果大体可分为基于智财模块(IP )和不基于智财模 块(IP)两大类。其中,基于智财模块(IP)库的系统生成算法是最大主流。不 基于智财模块(IP)库的协同设计,研究者很少,且发展緩慢。
基于智财模块(IP)的软硬件协同设计方法的缺陷1)失去了高层次综合
的精细性,不能根据数据流图的特点对所选智财模块(IP)进行具体功能调整、
优化;2)虽然为适应大规模任务流图的需要,将功能单元的规模由简单算子上 升为智财模块(IP),但这种机掩性的上升仍不能做到依特定系统约束类型的指 向真正灵活地把握硬件的规模和性能;3)需要认真调整各智财模块(IP)间接 口时序,增加了设计负担,同时使系统不够优化。在软硬件协同设计的意义上 即是说基于智财模块(IP)的软硬件协同设计方法是一种"半定制"设计方法, 不能依系统约束指向真正灵活地调整软硬件比例关系。

发明内容
1、 目的本发明的目的是提供一种算法加速的软硬件协同设计方法,该方 法克服了现有技术的不足,它思路敏捷,易学易用,适应面广;它具有良好兼 容性,适应于多核片上系统(SOC)设计的迫切要求,促进多核设计工具的完善。
2、 技术方案
针对软硬件协同设计现存的问题,本专利提出了一种基于硬件原型演化 RSA算法的软硬件协同设计方法。
图1表示出了在设计迭代条件下演化方法软硬件相互关系的;f莫型。这个V 字形模型,既表明了硬件相对于软件一个运行基础的地位,又表明了软硬件协 同设计中可配置硬件在系统设计中的枢纽地位。而对于以前几乎是二元对立并 行的软件、硬件设计过程,课题认为对大多数系统而言,特别对复杂算法系统 而言,系统设计从软件算法分析入手,采用统一建才莫i吾言(UML)等软件建模 工具描述系统是必需而且有利的。
图2表示出了石更件原型演化方法下的设计过程,可以看出其与瀑布形的4欠 件开发流程有相似之处。硬件开发与軟件相比,具有投资大的特点,若出现设 计周期迭代,损失的将不仅仅是宝贵的开发时间。这个特点决定了硬件开发要 遵循更稳妥的开发路线。而硬件原型演化可使开发者选择已有的硬件平台,步 步为营,渐变前进,确保每一步方案都可在原有基础上有所提高,根据帕累托
6最优原理,我们可以肯定这样最终所得的设计方案是符合帕累托最优的。
这种方法还有另外一个大的技术背景中央处理器(CPU)设计现在已经 进入多核时代,片上系统(SOC)也相应正在进入多核或片上网络(NOC)时 代,而根据国外相关课题研究认为对于复杂片上系统(SOC)设计来说,最 好的方法是从现在以中央处理器(CPU) +功能智财模块(IP)为模式的设计, 转变为以处理器为中心的可配置模块相组合的设计模式。这意味着以后的片上 系统(SOC)每个模块中都有一个中央处理器(CPU),都是一个有自主性的分 系统。所以这种情况下的每个模块都可适用本文的原型演化过程,而且将项目 分割为分系统进行独立设计演化是极为重要而合理的设计手段。
图2表示的是一个单线的原型演化设计过程,在工程实践中可冲艮据前期算 法剖析结果和工程需要,在相同的算法剖析研究之后,同时开始两个、三个乃 至更多的原型演化进程,选择不同的演化路径和方案,最后在几个演化结果方 案中选择一个最优的结果。这种处理可加快原型的演化,甚至可由不同团队并 行开发,确保最终方案成功的可能性,当然代价是更多的原型成本支出。
需要说明的是,原型演化方法最终方案的最优性是通过试验性探索而得到 的,这里的演化主要是建立在现场可编程门阵列(FPGA)等逻辑器件形成的片 上系统(SOC)的可编程性,主要不是指电路板的反复修改试验。实际中有的 情况下电路板的修改演化也是可能需要的,这种条件下,要注意演化步长的选 择, 一般到最终方案演化次数不要超过三次,避免原型成本的过度消耗。
综上所述,本发明一种算法加速的软硬件协同设计方法,该方法具体步骤 ^口下
步骤一算法和软件静态分析。算法数学原理可用Matlab等软件实现验证, 然后转化为C语言等可运行语言在pc机或专用目标硬件平台(如嵌入式设备) 上实现。
步骤二使用软件分析工具对软件运行进行动态实测分析,获得软件运行 基本数据图。该步骤需要的软件工具有生成函数调用图的IBM公司Rational套 件中的quantify;生成函数运行时间和访问次数的剖析(profile )软件,如Windows 环境Visual C下的VC profile、 Linux环境下的GDB以及相应嵌入式开发环境下 的剖析工具等。
步骤三结合系统要求、算法分析和软件实测分析数据,作出多核硬件系 统的总体结构和功能设计。该步骤要结合硬件设计经验,对系统功能进行粗粒 度细化分割,对有必要独立的任务设计由单独的以处理器为中心模块担当。对这些模块分别用演化方法进行设计,再讨论接口基础上的信息交流。对具有信
息安全特性的RSA加速本设计来说,协处理模块具有独立的数据存储空间,与 主处理器(MP)内存空间实现硬件隔离,是防止主存空间非法地址操作导致敏 感信息泄漏的根本性措施,所以只用设计一个专属的协处理模块(CPM)。
步骤四用建^i工具描述系统整体,该步骤推荐釆用对软件元素进行硬件 化扩展的统一建模语言(UML)。任一计算系统都必然具有通用的硬件处理平台, 软硬件协同主要是指的软件与替代软件功能的专用硬件模块之间的交互协同, 对应到统一建模语言(UML)中也就是首要在对象图这一层进行讨论和设计。 至于类图(class diagram),类是面向对象理论的精华,其核心是用软件的数据结 构对物理实体进行抽象和封装,以实现可继承性。
步骤五在步骤二基础上构造函数过程抽象图G"(包含运行时间参数的函 数调用图),以此为对象讨论软件在这种多核系统中的分布。把所研究程序段中 所有函数抽象为Gcc中一个个执行的节点,F即是所研究程序段中所有这种函数 节点的集合。r是运行期中所有被访问的全局变量的集合。五是G"中代表函数 直接调用的单向边的集合。F是G^中代表某函数访问某间接前驱函数数据结构 的单向边的集合。"是Gcc中代表函数访问全局变量过程单向边的集合。图6 是该图一个片段节选的示例。所以可得GcG其元素集合为(F + r,五+ E' +五")。 对每一个v e尸,W~ ( v)和^&( v )分别代表函数在主处理器(MP )和协处理 模块(CPM)上执行的周期数,count(v)代表v被调用的次数。图中的每条单 向边与一个或多个参数相联系,这些参数表征运行过程中这条边上数据传递过 程。通信调用过程实际的处理器耗用周期,通过传输的字节长度乘上一个经验
参数a获得。对每个eG(^UF),传输的字节数为wt(e)-Z::^"z',其中 =在e上被复制参数的个数,^ =参数i的访问次数,=参数i的长度。对 每个e(n, q) G(r),传输的字节数为wt(e) =^ (n)* sz(n),其中^(n)-全 局变量n的访问次数,sz(n)-n的字节长度。然后,构造一个数组so/[i],下标 i对应Gc'g中相应标号节点(F或F ),数组元素加^取值范围为0或者1,如果该 节点在主处理器(MP)进行运算对数组元素—赋值为0,如果该节点在CPM 运算对数组元素"^'赋值为1。因此,数组so/[i]的一个二进制排列组合,即可看 作对此段程序在两个处理器间的一种分布方案的对应。设>m为分配在主处理器(MP)上处理的函数的集合,A为分配在协处理模块(CPM)上处理的函数的 集合,g"为分配在主处理器(MP)上全局变量的集合。由此得出处理方案时间 消耗函数为so/cost = MPcost十CPMcost +五cost + f cost +五"cost。其中,MPcost
=( c_ycM (v)* count(v) ), V /"M; CPMcost = ( c_ycc(v)* count(v) ), V ve /"c; £cost=2>vt(e(p,《)),Vee五,; e/"似,《e//7c; £〃cost = Zwt(e(",《)),Vee£ff, 《e/"c, "egM。 Fcost计算方法是这样的对于每一个>c ,程序中标记出 所有与e U, v) e£ I ( V"e/"M, ve /"c )相联系的变量。接着,程序查找所 有e(v, m) e F |Vwe/"c,遍历所有与它们相联系的参数。如果参数/没有 被标记,则现在被标记,而且它的耗费 a。 * % #皮计入到cost。应该注意的是, 不同分界的五'cost计算结果是不同的。属于五'的边代表一种有条件复制如果 数据尚未被该函数同样在协处理模块(CPM)上的前驱函数复制到协处理模块
(CPM)内存,它才会被复制到协处理模块(CPM)。然后通过分支定界等最优 化方法对此函数进行求解,寻找一个最优化方案。该步骤实际是软件运行的数 学化表述过程,通过运筹学中的最优化算法讨论最佳软件分布。
步骤六按步骤五所得方案进行原型系统的软硬件实现,对实现的结果进 行评估,针对原型方案的问题设计演化方案,在演化中构造数量模型讨论演化 成果,以指导下一步演化,直到得到最终方案。该步骤类似于软件工程的演化 开发或维护再开发过程,在单次演化中采用的具体思路和方法与一般的软硬件 开发过程相似,软硬件关系服从图1的大V字型模型。 3、优点及功效
(1)本发明可避免基于智财模块(IP)的软硬件协同设计方法"半定制"、 不够灵活的特点。
(2 )本发明可改变不基于智财模块(IP )的软硬件协同设计方法长期停滞
的现状,推动其进一步研究。 (3)本发明对现有软硬件协同设计方法均具有良好兼容性,可在整体也可
在局部设计中使用,适应面广。 (4 )本发明可辅助解决系统设计初期对软硬件分布难以求解的复杂讨论,
思路简洁,易学易用,便于推广。 (5)本发明适应于多核片上系统(SOC)设计的迫切要求,立足现有开发
工具进行多核设计,促进多核设计工具的完善。(四)


1:设计迭代条件下演化方法软硬件关系模型示意图 2:硬件原型演化的过程示意图 3:函数运4亍时间统计示意图 4:多核硬件结构示意图
5:扩展统一建模语言(UML)描述系统示意图 6:函数过程抽象示意图
图中符号说明如下 MP:主处理器 CPM:协处理才莫块
MCU:微控制器(基本中央处理器模块) ,:所研究程序段中函数节点
运行期中被访问的全局变量
代表函数直接调用的单向边 五'代表某函数访问某间接前驱函数数据结构的单向边 ^:代表函数访问全局变量过程单向边 wt(e):相应调用过程传输的字节数
(五)
具体实施例方式
见图1、图2、图3、图4、图5、图6所示,本发明一种算法加速的软硬件
协同设计方法,该方法具体实施步骤如下
步骤一算法和软件静态分析。算法数学原理可用Matlab等软件实现验证, 然后转化为C语言等可运行语言在pc机或专用目标硬件平台(如嵌入式设备) 上实现。
步骤二使用软件分析工具对软件运行进行动态实测分析,获得软件运行 基本数据图。该步骤需要的软件工具有生成函数调用图的IBM公司Rational套 件中的quantify;生成函数运行时间和访问次数(如图3 )的剖析(profile)软 件,如Windows环境Visual C下的VC profile, Linux环境下的GDB以及相应 嵌入式开发环境下的剖析工具等。
步骤三结合系统要求、算法分析和软件实测分析数据,作出多核硬件系 统的总体结构和功能设计。该步骤要结合硬件设计经验,对系统功能进行粗粒 度细化分割,对有必要独立的任务设计由单独的以处理器为中心模块担当。对 这些^t块分别用演化方法进行设计,再讨论接口基础上的信息交流。对具有信 息安全特性的RSA加速本设计来说,协处理模块具有独立的数据存储空间,与
10主处理器(MP)内存空间实现硬件隔离,是防止主存空间非法地址操作导致每丈
感信息泄漏的根本性措施,所以只用设计一个专属的协处理模块(CPM)(如图 4)。
步骤四用建模工具描述系统整体,该步骤推荐采用对软件元素进行硬件 化扩展的统一建模语言(UML )。任一计算系统都必然具有通用的硬件处理平台, 软硬件协同主要是指的软件与替代软件功能的专用硬件模块之间的交互协同, 对应到统一建模语言(UML )中也就是首要在对象图这一层进行讨论和设计(如 图5)。至于类图(class diagram),类是面向对象理论的精华,其核心是用软件的 数据结构对物理实体进行抽象和封装,以实现可继承性。
步骤五在步骤二基础上构造函数过程抽象图Gcc (包含运行时间参数的函 数调用图),以此为对象讨论软件在这种多核系统中的分布。把所研究程序段中 所有函数抽象为Gcc中一个个执行的节点,f即是所研究程序段中所有这种函数 节点的集合。r是运行期中所有被访问的全局变量的集合。五是Gc。中代表函数 直接调用的单向边的集合。F是Gcc中代表某函数访问某间接前驱函数数据结构 的单向边的集合。^是G^中代表函数访问全局变量过程单向边的集合。图6 是该图一个片段节选的示例。所以可得GcG其元素集合为(F + F,£ + + 对每一个vEF, ,MO)和Wc("分别代表函数在主处理器(MP)和协处理 模块(CPM)上执行的周期数,count(v )代表v被调用的次数。图中的每条单 向边与一个或多个参数相联系,这些参数表征运行过程中这条边上数据传递过 程。通信调用过程实际的处理器耗用周期,通过传输的字节长度乘上一个经验
参数a获得。对每个eE(五U F),传输的字节数为wt(e) = *巧,其中^
=在e上被复制参数的个数,"c'=参数i的访问次数,巧=参数i的长度。对 每个e(n, q) e(五"),传输的字节数为wt(e) (n)* sz(n),其中^(n)-全
局变量n的访问次数,sz(n)-n的字节长度。然后,构造一个数组w/[i],下标 i对应Gcc中相应标号节点(F或K ),数组元素"^'取值范围为0或者1,如果该 节点在主处理器(MP)进行运算对数组元素^"赋值为0,如果该节点在CPM 运算对数组元素—赋值为1。因此,数组so/[i]的一个二进制排列组合,即可看 作对此段程序在两个处理器间的一种分布方案的对应。设> 为分配在主处理器 (MP)上处理的函数的集合,A'为分配在协处理模块(CPM)上处理的函数的
ii集合,^为分配在主处理器(MP)上全局变量的集合。由此得出处理方案时间 消耗函数为so/cost — 画MPcost十CPMcost +五cost +五'cost +五"cost。其中,MPcost
=》 ( (v)* count(v) ), V ; CPMcost =》'(,c(v)* count(v) ), V ve >c;
£cost=Zwt(e(p,《)),Vee£, joe , 《e/"c; cost = Zwt(e(w,《)),Vee五", g e >c ,"e gM 。
F cost计算方法是这样的对于每一个ve /"c ,程序中标记出 所有与e (w, v) e五I ( Vwe /% , /"c )相联系的变量。接着,程序查找所 有e(v,e五'|Vwe/"c,遍历所有与它们相联系的参数。如果参数z'没有 被标记,则现在被标记,而且它的耗费 4皮计入到cost。应该注意的是,
不同分界的五'cost计算结果是不同的。属于五'的边代表一种有条件复制如果 数据尚未被该函数同样在协处理模块(CPM)上的前驱函数复制到协处理模块
(CPM)内存,它才会被复制到协处理模块(CPM)。然后通过分支定界等最优 化方法对此函数进行求解,寻找一个最优化方案。该步骤实际是软件运行的数 学化表述过程,通过运筹学中的最优化算法讨论最佳软件分布。
步骤六按步骤五所得方案进行原型系统的软硬件实现,对实现的结果进 行评估,针对原型方案的问题设计演化方案,在演化中构造数量模型讨论演化 成果,以指导下一步演化,直到得到最终方案。该步骤类似于软件工程的演化 开发或维护再开发过程,在单次演化中采用的具体思路和方法与一般的软硬件 开发过程相似,软硬件关系服从图l的大V字型模型。
权利要求
1、一种算法加速的软硬件协同设计方法,其特征在于该方法具体步骤如下步骤一算法和软件静态分析 id="icf0001" file="A2009100766930002C1.tif" wi="2" he="5" top= "44" left = "91" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>算法数学原理可用Matlab等软件实现验证,然后转化为C语言等可运行语言在pc机或专用目标硬件平台即嵌入式设备上实现;步骤二使用软件分析工具对软件运行进行动态实测分析,获得软件运行基本数据图 id="icf0002" file="A2009100766930002C2.tif" wi="2" he="2" top= "78" left = "42" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>该步骤需要的软件工具有生成函数调用图的IBM公司Rational套件中的quantify软件;生成函数运行时间和访问次数的profile剖析软件,如Windows环境Visual C下的VC profile、Linux环境下的GDB以及相应嵌入式开发环境下的剖析工具;步骤三结合系统要求、算法分析和软件实测分析数据,作出多核硬件系统的总体结构和功能设计 id="icf0003" file="A2009100766930002C3.tif" wi="2" he="3" top= "117" left = "73" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>该步骤要结合硬件设计经验,对系统功能进行粗粒度细化分割,对有必要独立的任务设计由单独的以处理器为中心模块担当 id="icf0004" file="A2009100766930002C4.tif" wi="2" he="1" top= "126" left = "178" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>对这些模块分别用演化方法进行设计,再讨论接口基础上的信息交流 id="icf0005" file="A2009100766930002C5.tif" wi="2" he="2" top= "134" left = "163" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>对具有信息安全特性的RSA加速本设计来说,协处理模块具有独立的数据存储空间,与主处理器即MP内存空间实现硬件隔离,是防止主存空间非法地址操作导致敏感信息泄漏的根本性措施,所以只用设计一个专属的CPM协处理模块;步骤四用建模工具描述系统整体,该步骤推荐采用对软件元素进行硬件化扩展的统一建模语言即UML;任一计算系统都必然具有通用的硬件处理平台,软硬件协同主要是指的软件与替代软件功能的专用硬件模块之间的交互协同,对应到统一建模语言UML中也就是首要在对象图这一层进行讨论和设计 id="icf0006" file="A2009100766930002C6.tif" wi="1" he="2" top= "191" left = "175" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>至于类图class diagram,类是面向对象理论的精华,其核心是用软件的数据结构对物理实体进行抽象和封装,以实现可继承性;步骤五在步骤二基础上构造函数过程抽象图GCG,包含运行时间参数的函数调用图,以此为对象讨论软件在这种多核系统中的分布;把所研究程序段中所有函数抽象为GCG中一个个执行的节点,F即是所研究程序段中所有这种函数节点的集合,V是运行期中所有被访问的全局变量的集合,E是GCG中代表函数直接调用的单向边的集合,E′是GCG中代表某函数访问某间接前驱函数数据结构的单向边的集合,E″是GCG中代表函数访问全局变量过程单向边的集合,所以可得GCG其元素集合为(F+V,E+E′+E″);对每一个v∈F,cycM(v)和cycC(v)分别代表函数在主处理器M和协处理模块CPM上执行的周期数,count(v)代表v被调用的次数;通信调用过程实际的处理器耗用周期,通过传输的字节长度乘上一个经验参数α获得;对每个e∈(E∪E′),传输的字节数为<maths id="math0001" num="0001" ><math><![CDATA[ <mrow><mi>wt</mi><mrow> <mo>(</mo> <mi>e</mi> <mo>)</mo></mrow><mo>=</mo><msubsup> <mi>&Sigma;</mi> <mrow><mi>i</mi><mo>=</mo><mn>0</mn> </mrow> <mrow><mi>i</mi><mo>=</mo><msub> <mi>e</mi> <mi>N</mi></msub> </mrow></msubsup><msub> <mi>ac</mi> <mi>i</mi></msub><mo>*</mo><msub> <mi>sz</mi> <mi>i</mi></msub><mo>,</mo> </mrow>]]></math> id="icf0007" file="A2009100766930003C1.tif" wi="13" he="4" top= "53" left = "153" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>其中eN=在e上被复制参数的个数,aci=参数i的访问次数,szi=参数i的长度;对每个e(n,q)∈(E″),传输的字节数为wt(e)=ace(n)*sz(n),其中ace(n)=全局变量n的访问次数,sz(n)=n的字节长度,然后,构造一个数组sol[i],下标i对应GCG中相应标号节点(F或V),数组元素soli取值范围为0或者1,如果该节点在主处理器(MP)进行运算对数组元素soli赋值为0,如果该节点在CPM运算对数组元素soli赋值为1;因此,数组sol[i]的一个二进制排列组合,即可看作对此段程序在两个处理器间的一种分布方案的对应;设fnM为分配在主处理器(MP)上处理的函数的集合,fnC为分配在协处理模块CPM上处理的函数的集合,gM为分配在主处理器MP上全局变量的集合,由此得出处理方案时间消耗函数为solcost=MPcost+CPMcost+E cost+E′cost+E″cost。其中,MPcost=∑i(cycM(v)*count(v)),<maths id="math0002" num="0002" ><math><![CDATA[ <mrow><mo>&ForAll;</mo><mi>v</mi><mo>&Element;</mo><msub> <mi>fn</mi> <mi>M</mi></msub><mo>;</mo> </mrow>]]></math> id="icf0008" file="A2009100766930003C3.tif" wi="17" he="4" top= "148" left = "106" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>CPMcost=∑i(cycC(v)*count(v)),<maths id="math0003" num="0003" ><math><![CDATA[ <mrow><mo>&ForAll;</mo><mi>v</mi><mo>&Element;</mo><msub> <mi>fn</mi> <mi>C</mi></msub><mo>;</mo> </mrow>]]></math> id="icf0009" file="A2009100766930003C4.tif" wi="16" he="4" top= "156" left = "46" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>E cost=∑wt(e(p,q)),<maths id="math0004" num="0004" ><math><![CDATA[ <mrow><mo>&ForAll;</mo><mi>e</mi><mo>&Element;</mo><mi>E</mi><mo>,</mo> </mrow>]]></math> id="icf0010" file="A2009100766930003C5.tif" wi="14" he="3" top= "157" left = "112" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>p∈fnM,q∈fnC;E″cost=∑wt(e(n,q)),<maths id="math0005" num="0005" ><math><![CDATA[ <mrow><mo>&ForAll;</mo><mi>e</mi><mo>&Element;</mo><msup> <mi>E</mi> <mrow><mo>&prime;</mo><mo>&prime;</mo> </mrow></msup><mo>,</mo> </mrow>]]></math> id="icf0011" file="A2009100766930003C6.tif" wi="15" he="3" top= "165" left = "58" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>q∈fnC,n∈gM;E′cost计算方法是这样的对于每一个v∈fnC,程序中标记出所有与<maths id="math0006" num="0006" ><math><![CDATA[ <mrow><mi>e</mi><mrow> <mo>(</mo> <mi>u</mi> <mo>,</mo> <mi>v</mi> <mo>)</mo></mrow><mo>&Element;</mo><mi>E</mi><mo>|</mo><mrow> <mo>(</mo> <mo>&ForAll;</mo> <mi>u</mi> <mo>&Element;</mo> <msub><mi>fn</mi><mi>M</mi> </msub> <mo>,</mo> <mi>v</mi> <mo>&Element;</mo> <msub><mi>fn</mi><mi>C</mi> </msub> <mo>)</mo></mrow> </mrow>]]></math> id="icf0012" file="A2009100766930003C7.tif" wi="72" he="4" top= "172" left = "94" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>相联系的变量;接着,程序查找所有<maths id="math0007" num="0007" ><math><![CDATA[ <mrow><mi>e</mi><mrow> <mo>(</mo> <mi>v</mi> <mo>,</mo> <mi>u</mi> <mo>)</mo></mrow><mo>&Element;</mo><msup> <mi>E</mi> <mo>&prime;</mo></msup><mo>|</mo><mo>&ForAll;</mo><mi>u</mi><mo>&Element;</mo><msub> <mi>fn</mi> <mi>C</mi></msub><mo>,</mo> </mrow>]]></math> id="icf0013" file="A2009100766930003C8.tif" wi="52" he="5" top= "181" left = "85" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>遍历所有与它们相联系的参数 id="icf0014" file="A2009100766930003C9.tif" wi="2" he="2" top= "192" left = "40" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>如果参数i没有被标记,则现在被标记,而且它的耗费aci*szi被计入到E′cost;应该注意的是,不同分界的E′cost计算结果是不同的;属于E′的边代表一种有条件复制如果数据尚未被该函数同样在协处理模块CPM上的前驱函数复制到协处理模块CPM内存,它才会被复制到协处理模块CPM;然后通过分支定界等最优化方法对此函数进行求解,寻找一个最优化方案,该步骤实际是软件运行的数学化表述过程,通过运筹学中的最优化算法讨论最佳软件分布;步骤六按步骤五所得方案进行原型系统的软硬件实现,对实现的结果进行评估,针对原型方案的问题设计演化方案,在演化中构造数量模型讨论演化成果,以指导下一步演化,直到得到最终方案;该步骤类似于软件工程的演化开发或维护再开发过程,在单次演化中采用的具体思路和方法与一般的软硬件开发过程相似,软硬件关系服从图1的大V字型模型。
全文摘要
本发明是一种算法加速的软硬件协同设计方法,该方法有六个步骤步骤一算法和软件静态分析;步骤二使用软件分析工具对软件运行进行动态实测分析,获得软件运行基本数据图;步骤三结合系统要求、算法分析和软件实测分析数据,作出多核硬件系统的总体结构和功能设计;步骤四用合适的建模工具(RML)描述系统整体;步骤五在步骤二基础上构造函数过程抽象图G<sub>CG</sub>(包含运行时间参数的函数调用图),以此为对象讨论软件在这种多核系统中的分布;步骤六按步骤五所得方案进行原型系统的软硬件实现,对实现的结果进行评估。该方法具有良好兼容性,适应于多核片上系统(SOC)设计的迫切要求,促进多核设计工具的完善。它有很好的实用价值和应用前景。
文档编号G06F17/50GK101493862SQ20091007669
公开日2009年7月29日 申请日期2009年1月15日 优先权日2009年1月15日
发明者可 左, 翔 王 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1