书签 分享 收藏 举报 版权申诉 / 12

考虑硬件预配置因素的动态软硬件划分方法.pdf

  • 上传人:g****
  • 文档编号:998314
  • 上传时间:2018-03-24
  • 格式:PDF
  • 页数:12
  • 大小:679KB
  • 摘要
    申请专利号:

    CN201010022085.5

    申请日:

    2010.01.19

    公开号:

    CN101763288A

    公开日:

    2010.06.30

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||实质审查的生效IPC(主分类):G06F 9/50申请日:20100119|||公开

    IPC分类号:

    G06F9/50

    主分类号:

    G06F9/50

    申请人:

    湖南大学

    发明人:

    李仁发; 陈宇; 徐成; 吴强; 刘彦; 朱海; 袁虎; 钟俊; 刘滔; 邝继顺; 李蕊; 李肯立; 罗娟; 赵欢; 杨科华; 任小西; 杨书凡; 彭日光; 李春江; 黄瑜臣; 张维; 李浪

    地址:

    410082 湖南省长沙市岳麓区岳麓山麓山南路2号

    优先权:

    专利代理机构:

    长沙市融智专利事务所 43114

    代理人:

    颜勇

    PDF完整版下载: PDF下载
    内容摘要

    本发明提供了一种考虑硬件预配置因素的动态软硬件划分方法,其特征在于,在程序运行过程中,进行动态的软硬件划分,在可重构硬件资源上进行一个或多个函数的配置,对待划分函数维护一个待划分函数列表list(f1,…,fm),其中fk为定义硬件加速比,k为待划分的一个函数;k=1,…,m,m为待划分函数个数,基于硬件加速比对函数配置,并且考虑到硬件预配置因素。本发明基于硬件加速比对函数进行动态软硬件配置,充分利用了系统的硬件资源,从而显著提高整个系统的任务处理效率。

    权利要求书

    1.  一种考虑硬件预配置因素的动态软硬件划分方法,其特征在于,在程序运行过程中,进行动态的软硬件划分,在可重构硬件资源上进行一个或多个函数的配置,对待划分函数维护一个待划分函数列表list(f1,…,fm),其中fk为硬件加速比,k为待划分的一个函数;k=1,…,m,m为待划分函数个数,硬件加速比定义为:
    f=(Ck*Timeswk(1-Xnowk)*Trfk+Ck*(Timehwk+Commk))k∈F,]]>F对应待划分函数的集合;Ck为函数k在程序运行过程中被调用的次数,Timeswk为函数k的软件执行时间;为0时表示函数k当前划分为硬件,反之表示函数k当前为软件;Trfk对应函数k的硬件实现函数的配置时间;Timehwk为函数k的硬件执行时间;Commk为函数k的硬件实现函数的软硬件通信代价,为硬件与软件的参数传递时间;
    具体划分步骤如下:
    步骤1:从列表list(f1,…,fm)中选出最大值fi
    步骤2:如果fi已经被划分为硬件,则从列表中删除fi,更新列表,返回步骤1,否则,进入下一步;
    步骤3:检测当前的可重构资源是否足够,是则将函数i划分为硬件,并配置到可重构资源上,从列表中删除fi,更新列表,返回步骤1;
    否则,进入下一步;
    步骤4:fi与fj比较,fj为函数j的硬件加速比,函数j为已经配置在可重构资源上的函数中的一个函数,且在所有的已经配置在可重构资源上的函数中,函数j所对应的加速比最小;如果fi大于fj,则将函数j划分为软件,从可重构资源中删除函数j,返回步骤3;如果fi小于fj,则进入步骤4.1;
    步骤4.1:检测list是否为空,不空,则保存本次划分结果,结束;如果是空,则计算关系矩阵Cst,选出该关系矩阵Cst中最大值元素cst,将cst对应的函数t加入到待划分函数列表list(f1,…,fm)中更新待划分函数列表list(f1,…,fm),进入步骤4.2;
    所述的Cst记录函数调用次序信息,关系矩阵Cst为m*N个元素,N为m个待划分的函数可能调用的所有函数的个数;s元素表示当前划分的所有函数,元素cij表示函数i被调用后立刻就调用了函数j的次数。
    步骤4.2:判断硬件资源对应函数t是否足够,是则将函数t配置到硬件中,在列表list(f1,…,fm)中删除函数t,否则,返回步骤4.1。

    说明书

    考虑硬件预配置因素的动态软硬件划分方法
    技术领域
    本发明属于计算机软件技术领域,涉及一种考虑硬件预配置因素的动态软硬件划分方法。
    背景技术
    根据划分层次和粒度,有关动态软硬件划分的研究主要分成两种思路。
    第一种思路由乔治等人在2003年设计自动化会议上提出,并在其后期工作中不断发展,主要是利用专门高速缓冲存储器记录软件程序中循环执行的频度,选择执行频度最高的循环,将其机器代码反汇编后提取数据流图,在额外的微处理器上运行一个在线综合程序将数据流图综合为逻辑电路,并配置到可编程器件上。这样设计人员无需考虑软硬件划分,可以直接设计纯软件实现的应用系统,而由动态软硬件划分来决定实际的划分方案。因这种思路从底层入手,可以称之为指令级动态软硬件划分方法。
    另一种思路从高层着眼,把配置到可编程器件的硬件电路看作一种硬件进(线)程,通过构建支持硬件进(线)程的操作系统,实现软硬件进(线)程的相互迁移和切换。因此,可以称之为进(线)程级动态软硬件划分。面向部分可重构FPGA的在线综合(On-Line Synthesis for Partially Reconfigurable FPGAs.)详细讨论了面向可重构系统的操作系统中硬件进程调度的在线布局问题;设计了一个称为BORPH的操作系统,利用Unix进程来表示硬件任务,并通过扩展Unix系统进程服务接口实现对硬件任务的支持。国内复旦大学的周博、邱卫东、彭澄廉研究了利用软硬件多任务模型来降低软硬件进程迁移开销,并通过扩展μCOS-II嵌入式操作系统实现了一个原型系统。
    指令级和进(线)程级动态软硬件划各有优劣。
    划分方法的不足:
    指令级动态软硬件划分方法:
    由于需要额外的专用微处理器进行在线反汇编、综合和布局布线,硬件开销比较大。
    另一方面指令级动态软硬件划分粒度目前局限在基本块内,结构也局限于单循环结构,性能提升效果有限。
    另外,虽然设计人员只需提供软件实现方案,而把软硬件划分和硬件综合交给专门软硬件执行,但这样未能利用已有的硬件设计资源,这在目前第三方IP(IntellectualProperty知识产权)核十分丰富的情况下,显得有些浪费。进(线)程级动态软硬件划分:
    相对指令级动态软硬件划分而言,进(线)程调度、通信、同步基本由软件完成,时间开销较大。
    虽然在一些研究中提出了支持可重构计算操作系统的专门硬件,但主要负责配置信息和可重配置资源管理,进程调度和切换还是由软件完成。
    另外,目前的进(线)程级动态软硬件划分研究中对软硬件透明编程模型还关注不够,软件和硬件进(线)程对设计人员是可见的,程序员创建一个软件或硬件进(线)程的同时,实际已暗示了相应功能的软硬件划分,虽然有可能增加专门代码和电路来进行软硬件进(线)程迁移,但需要同时修改操作系统和底层硬件以提供支持,对开发人员的综合能力要求极高,并非一个理想的方案。
    发明内容
    本发明的所要解决的技术问题是提供一种考虑硬件预配置因素的动态软硬件划分方法,采用该方法,任务的执行效率显著提高。
    为解决上述技术问题,本发明所采用的技术方案为:
    一种考虑硬件预配置因素的动态软硬件划分方法,其特征在于,在程序运行过程中,进行动态的软硬件划分,在可重构硬件资源上进行一个或多个函数的配置,对待划分函数维护一个待划分函数列表list(f1,…,fm),其中fk为硬件加速比,k为待划分的一个函数;k=1,…,m,m为待划分函数个数,硬件加速比定义为:F对应待划分函数的集合;Ck为函数k在程序运行过程中被调用的次数,Timeswk为函数k的软件执行时间;为0时表示函数k当前划分为硬件,反之表示函数k当前为软件;Trfk对应函数k的硬件实现函数的配置时间;Timehwk为函数k的硬件执行时间;Commk为函数k的硬件实现函数的软硬件通信代价,为硬件与软件的参数传递时间;【参数传递时间可以用传统的仿真工具仿真出来,函数的软件执行时间可以由系统中统计函数执行时间的函数得到,具体的一种实现方法为:进入函数时调用了dl_update_time_front和dl_get_time函数,在函数结尾时调用了dl_hw_update_time函数,这些函数将自动测量和保存该硬件函数的执行时间】;
    具体划分步骤如下:
    步骤1:从列表list(f1,…,fm)中选出最大值fi
    步骤2:如果fi已经被划分为硬件,则从列表中删除fi,更新列表,返回步骤1,否则,进入下一步;
    步骤3:检测当前的可重构资源是否足够,是则将函数i划分为硬件,并配置到可重构资源上,从列表中删除fi,更新列表,返回步骤1;
    否则,进入下一步;
    步骤4:fi与fj比较,fj为函数j的硬件加速比,函数j为已经配置在可重构资源上的函数中的一个函数,且在所有的已经配置在可重构资源上的函数中,函数j所对应的加速比最小;如果fi大于fj,则将函数j划分为软件,从可重构资源中删除函数j,返回步骤3;如果fi小于fj,则进入步骤4.1;
    步骤4.1:检测list是否为空,不空,则保存本次划分结果,结束;如果是空,则计算关系矩阵Cst,选出该关系矩阵Cst中最大值元素cst,将cst对应的函数t加入到待划分函数列表list(f1,…,fm)中更新待划分函数列表list(f1,…,fm),进入步骤4.2;
    所述的Cst记录函数调用次序信息,关系矩阵Cst为m*N个元素,N为m个待划分的函数可能调用的所有函数的个数;s元素表示当前划分的所有函数,元素cij表示函数i被调用后立刻就调用了函数j的次数。
    步骤4.2:判断硬件资源对应函数t是否足够,是则将函数t配置到硬件中,在列表list(f1,…,fm)中删除函数t,否则,返回步骤4.1。
    发明的有益效果:
    本发明的技术主要构思是在软硬件动态划分过程中,提出了考虑硬件预配置的方法,通过衡量软硬件执行某一函数或任务的花费时间比值的硬件加速比,某一函数的硬件加速比越大,说明该函数越适宜于采用硬件执行,在此过程中,并考虑函数间的调用关系,预先将执行概率最大的函数配置到硬件资源上,基于硬件加速比对函数进行动态软硬件配置,充分利用了系统的硬件资源,并且考虑了函数间的调用关系,从而显著提高整个系统的任务处理效率。关于采用本方法的速度与其他配置方法比较,具体见实施例中的测试例。
    另外,从时间复杂度分析该算法的时间复杂度相较其他算法而言具有较低的时间复杂度。对于一个应用实例,假设其设计中总共调用了n个函数,在调用算法时,List中包含有m个待划分的函数(m≤n),划分算法的时间主要花销在对函数队列的查找、删除操作上。通常,队列的查找和删除操作的时间复杂度可以维持在O(logn),从而算法的复杂度可以维持在O(mlogm),由于m≤n,算法最差时间复杂度可以维持在O(nlog n)。队列中每个函数对包含有多个固定大小的属性值,假设每个函数对占用的空间大小为K,则算法的空间复杂度为O(Km),由于m≤n,算法最差空间复杂度可以维持在O(Kn)。远低于传统的一些迭代划分算法而言,如遗传算法最好情况下的时间复杂度为O(rn^2)等.
    附图说明
    图1为考虑硬件预配置因素的动态软硬件划分方法的流程图;
    图2为软硬件划分数据流图;
    图3为不同配置下程序的执行时间对照图;
    图4为JPEG编码系统;
    图5为过程级软硬件划分算法三种情况的性能比较图。
    具体实施方式
    以下结合附图对本发明作进一步说明。
    问题描述和作何改进
    软硬件划分主要是决定抽象函数在运行时是动态链接到软件,还是硬件实现代码上。在进行划分前,首先需要确定划分的对象。而待划分的函数可能很多,这样就需要从中选择一组,使系统在满足资源约束的条件下获得最优性能,所以这是一个约束组合优化问题。由于动态软硬件划分在运行时进行,需要能根据划分后系统运行情况改进原有划分。
    过程级划分算法的主要优点是:1)面积/性能的折中。相比之下,过程级粒度占用面积适中,通信代价固定。2)对象数量较小。由于抽象层次较高,而且划分对象只限于同时具有软硬件实现的过程,从而划分对象较小,使算法的性能得到提高。采用如下思路来设计动态划分流程。
    算法具体实现:
    一.划分算法问题描述
    在满足体系结构和资源限制的前提下,软硬件划分算法的目标在于最小化应用程序的运行时间,其工作重点在通过将硬件过程迁移到FPGA上执行来优化序列化的软件应用程序。与通用的多进程的软硬划分模型不同,动态链接控制可以保证软硬件执行过程串行执行,而且硬件过程的通信代价是固定的。
    首先定义相关概念如下:问题的输入用三元组<F,Areatotal,Tall_software>来表示。其中Areatotal代表系统中最大可用的硬件面积;Tall_software是纯软件的方式来执行应用程序所花费的时间;F对应着应用中包含的软硬件函数对,其由四元组<C,Timesw,HW,Xnow>组成,其中C是对应函数对总的调用次数,Timesw表示软件函数执行时间;Xnow则为函数的当前划分结果,其中Xnow=0或1,为1时表示函数i当前划分为硬件,反之为软件;HW代表硬件实现方案,其可由三元组<Areahw,Chw,Comm,Timehw,Trf>表示,Areahw代表硬件函数面积;Chw是该硬件函数执行的次数;Comm是软硬件通信代价;Timehw为硬件执行时间,Trf对应硬件函数的配置时间。整个划分算法的目标是使得公式:
    具有最小值。其中Chw,HW表示选中函数的硬件方案执行次数;Timesw,F代表F集合中选中的函数的软件函数执行时间;Timehw,HW代表F集合中选中的函数的硬件函数执行时间;CommHW代表F集合中选中的函数的硬件函数的通信时间。
    由于硬件资源非常有限,所以对任务的资源占用需要一定的约束条件,在任意时刻j满足
    ΣHWXnow*AreahwAreatotal]]>
    二、算法设计
    上述问题可以看成是一个0/1背包问题,可采用贪婪法则进行最优化。在约束条件下,假设系统已经根据当前划分执行了一段时间。对于每个函数,下一次划分决策会受诸多因素影响,将这些因素综合起来,可计算出本函数的划分倾向度:
    分析Fi函数中各项的形式,主要考虑硬件函数的加速比。如果划分为硬件实现能使函数执行得到加速,那么该函数显然倾向于划分为硬件实现,相应的子项为:

    Ci在新一轮划分完成后将清零,重新统计函数i的被调用次数。f的值越大,函数越倾向于划分为硬件实现。在划分过程中,函数调用次数对划分倾向度有影响,调用次数越多,越倾向于划分为硬件实现。矩阵C记录函数调用次序信息,cij表示函数i被调用后立刻就调用了函数j的次数。获得Fi的计算方法后,每次进行划分时,可计算出所有函数的Fi值,然后按以下方法选择划分为硬件实现的函数:
    显然,上述软硬件划分算法可以根据系统运行的当前情况进行调整,因为每次划分时xi【xi如果为0时表示函数k当前划分为硬件,反之表示函数k当前为软件;】参数的值可能由于系统运行情况的改变而与前一次不同。考虑获得系统运行信息需要一定时间,可以采用周期性的方式调用该算法。另外,还在算法中加入了预配置机制,这主要是考虑硬件配置较为耗时,如果能利用其它函数执行时提前配置需要的硬件模块,便可能大大降低有效计算外的开销。采用启发式预配置方法并利用运行时记录的函数调用次序信息进行预配置,假设利用一个矩阵C记录,cij表示函数i被调用后立刻就调用了函数j的次数。如果函数i当前被划分为硬件实现,并已配置到可重构资源上,应该考虑将对应的函数k进行预配置,原因是函数k在下一轮划分中被划分为硬件实现的可能性较高,其中函数k可通过以下公式确定:

    如果满足以上四个条件,即代表函数k当前划分为软件实现,且此时空闲可重构资源足够,则将函数k进行预配置。其中Areanow代表系统在当前时刻可用的硬件面积。图1显示了预配置与过程级软硬件划分结合的划分过程。
    评价函数将用来评估软硬件划分算法解方案的优劣,在软硬件划分方案给出后,可以经过调度得出该方案的耗时,根据耗时情况来判断本次划分是否优于前次的划分方案并取而代之。假设P为当前划分,P’为新的划分,T为P的时间函数(通过调度获取)即T(P)。若T(P)≤T(P),则评价新的划分为一个更优的解,否则丢弃新划分。软硬件划分经过评价函数来接受或拒绝新解,使最终结果趋于最优。
    三、动态划分流程:
    程序运行过程中将自动加载相应的硬件函数,软硬件函数的执行选择由划分算法决定,图2显示了整个运行时环境的数据流。
    当应用程序调用某一函数时,运行时环境需对函数名进行分析,从而判断是否具有相应的硬件函数实现,如果没有,则继续运行软件代码,否则在软硬件函数运行时信息表中为其创建一个新的记录并从硬件函数库中读入相应的配置信息。这一数据结构中主要包括软硬件函数执行时间、函数调用次数、硬件函数面积等将被提供给软硬件划分算法的参数信息。
    软硬件动态链接过程根据划分结果为函数选择一种执行位置(要么在微处理器上,要在FPGA上),如果调用的是硬件函数,则首先查询可重构资源管理器,若该硬件函数尚未配置,则需要进行动态重构,接着运行硬件加速器,最后将执行结果写入数据区域。
    算法性能测评:
    使用C语言描述我们提出的过程级软硬件划分算法。由于实际已有的软硬件划分算法大多采用进程作为划分单位,或采用基本块(指令级划分),而我们提出的是在过程级进行软硬件划分,以自定义的软硬件抽象函数为划分对象,与这些算法难以直接进行比较实验。所以本文考虑平台的特点,设计了以下三种方法来评估本文算法的性能,一个是无动态重构支持;二是加入部分动态可重构后的划分;三是引入预配置后的划分。三种方法都使用JPEG编码系统(如图4)进行验证。
    错误!未找到引用源。展示了三种方式实现JPEG编码所需要的时间。无动态重构支持的软硬件划分性能最差,动态重构下的划分性能比前者提高了9.93%。引入预配置后,过程级软硬件划分的性能比无动态重构支持的划分提高了18.44%,比动态重构下的划分提高了9.45%。实验表明,随着可重构资源利用效率的不断提高,过程级软硬件划分的优势将更为明显。
    实施例1:
    一种考虑硬件预配置因素的动态软硬件划分方法,其特征在于,在程序运行过程中,在可重构硬件资源上已配置一个或多个函数,对待划分函数维护一个待划分函数列表list(f1,…,fm),其中fk为硬件加速比,k为待划分的一个函数;k=1,…,m,m为待划分函数个数:
    F对应待划分函数的集合;Ck为函数k被调用的次数,Timeswk为函数k的软件执行时间;为0时表示函数k当前划分为硬件,反之表示函数k当前为软件;Trfk对应函数k的硬件实现函数的配置时间;Timehwk为函数k的硬件执行时间;Commk为函数k的硬件实现函数的软硬件通信代价,为硬件与软件的参数传递时间(可以用传统的仿真工具仿真出来,函数的软件执行时间可以由系统中统计函数执行时间的函数得到);
    3DES加密函数和解密函数使用一个硬件加速器,配置时间为Timehwk=3.0179526s,]]>Timeswk=0.003247955s,]]>Timehwk=2.27033E-05s,]]>Commk=9.40E-05s;Hamming编码函数和解码函数使用另一个加速器,Timeswk=1.08462E-05s,]]>Timehwk=1.90E-06s.]]>Commk=7.6E-06s对于一个复杂的嵌入式系统,一次运行可能调用,这些函数上千次以上,所以Ck设为2000,根据以上参数可以算出3DES的f=2.07,Hamming编码的f=0.01。
    具体划分步骤如下:
    步骤1:从列表list(f1,…,fm)中选出最大值fi
    步骤2:如果fi已经被划分为硬件,则从列表中删除fi,更新列表,返回步骤1,否则,进入下一步;
    步骤3:检测当前的可重构资源是否足够,是则将函数i划分为硬件,并配置到可重构资源上,从列表中删除fi,更新列表,返回步骤1;
    否则,进入下一步;
    步骤4:fi与fj比较,fj为函数j的硬件加速比,函数j为已经配置在可重构资源上的函数中的一个函数,且在所有的已经配置在可重构资源上的函数中,函数j所对应的加速比最小;如果fi大于fj,则将函数j划分为软件,从可重构资源中删除函数j,返回步骤3;如果fi小于fj,则进入步骤4.1;
    步骤4.1:检测list是否为空,不空,则保存本次划分结果,结束;如果是空,则计算关系矩阵Cst,选出该关系矩阵Cst中最大值元素cst,将cst对应的函数t加入到待划分函数列表list(f1,…,fm)中更新待划分函数列表list(f1,…,fm),进入步骤4.2;
    所述的Cst记录函数调用次序信息,关系矩阵Cst为m*N个元素,N为m个待划分的函数可能调用的所有函数的个数;s元素表示当前划分的所有函数,元素cij表示函数i被调用后立刻就调用了函数j的次数。
    步骤4.2:判断硬件资源对应函数t是否足够,是则将函数t配置到硬件中,在列表list(f1,…,fm)中删除函数t,否则,返回步骤4.1。
    测试例:实验同时运行两项任务,3DES加密函数和解密函数使用一个硬件加速器,配置时间为3.0179526s,Hamming编码函数和解码函数使用另一个加速器,配置时间为2.3684901秒,分别测试它们对1K或1M数据进行处理,在不同配置下程序所消耗的时间,实验结果如图3所示。其中static表示程序运行时加速器已经静态配置完毕,而dynamic表示加速器将在程序运行时动态配置;all software表示上四个函数执行方式为纯软件执行,all hardware为纯硬件执行,3des hardware表示3DES加/解密函数用纯硬件执行,而hamming编/解码则用纯软件执行,hamming hardware则正好相反,random hardware表示这四个函数的执行方式是随机的,这五个不同的配置可以通过替换划分算法库来实现。
    由于软件执行速度慢,从而导致动态重构情况下全软件实现模式性能最差。从图中还可以看到3DES的软硬件实现是影响程序性能的关键,在处理的数据较大的情况下,只将它动态划分到硬件实现,取得几乎与静态配置同样高的性能,比纯软件实现至少快一个数量级,这是因为:①3DES的加速比和执行时间比Hamming更大(如图3示);②3DES配置时间与运行时间比可以忽略。

    关 键  词:
    考虑 硬件 配置 因素 动态 软硬件 划分 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:考虑硬件预配置因素的动态软硬件划分方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-998314.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1