基于单位面积加速比的可重构资源管理方法

文档序号:6597323阅读:138来源:国知局
专利名称:基于单位面积加速比的可重构资源管理方法
技术领域
本发明属于计算机软件以及可重构资源技术领域,涉及一种基于单位面积加速比 的可重构资源管理方法。
背景技术
传统嵌入式系统设计中,计算任务既能够通过对微处理器进行软件编程实现,也 可以使用专用集成电路(Application Specific Integrated Circuit, ASIC)等硬件设备 完成。高性能微处理器一般拥有一套属于自己的指令集,可通过软件编程灵活实现不同的 计算任务,但是受到指令的编码和执行顺序,存储器访问瓶颈及固定的控制体系结构的限 制,往往不能到达最高速度和最佳效率。ASIC是针对特定计算任务而专门设计的,设计电路 的约束基本在物理层次上实现,可得到最优的运算速度和效率,但修改十分困难,更换到不 同的工作环境或任务需求时,通常需要重新设计,也导致了 ASIC的开发周期较长、开发成 本过高、应用灵活性差等缺陷。以现场可编程门阵列(Field Programming Gate Array, FPGA)为代表的可重构器 件的出现促进了第三种计算模式一可重构计算的诞生。在此种新计算模式中,对数据的处 理既不表现为通用计算模式中运行在微处理器上的程序指令,也不同于专用计算模式中被 固化在ASIC芯片中运行的逻辑电路,而是以硬件配置文件的形式存在。进行计算之前,先 利用相应的配置文件在可重构器件上搭建任务运行时依赖的逻辑电路,其功能可以通过加 载不同的硬件配置文件而改变;一旦配置完成,便加载数据并处理,如同ASIC—样高效地 工作。因此,可重构计算模式兼具了通用计算的灵活性和专用计算的高效性,是一种能够满 足未来嵌入式应用市场复杂需求,且极具竞争力的技术解决方案。可重构计算技术根据其重构过程的行为差异可分为静态重构和动态重构两类。静 态重构是指系统运行前就一次性完成对整个可重构器件的配置,而在系统运行过程中,器 件上的逻辑结构必须保持静态,不允许改变。动态重构是指系统运行时可按需求在线配置 系统某些部分的电路结构,且其余部分仍不受影响地工作。动态重构技术利用了可重构器 件支持多次重复配置和在线实时配置的特性,按照实际应用的计算需求分时复用,并实时 调配可重构硬件上的资源,使用较少的硬件资源来实现复杂的逻辑电路功能,在提高系统 执行速度的同时又有效降低了系统成本,尤其适合对运行速度和灵活性都有较高要求的应 用,例如集成电路的计算机辅助设计、大数运算、目标识别、字符模式匹配、数据压缩、高速 数字滤波器、图形图像、视频编解码、演化计算、定制计算、嵌入式系统设计等,应用前景非 常广阔。动态可重构计算系统通常是一个异构的并行计算环境,包括多种不同类型的处理 单元,包括指令集处理器(GPP、ASIP、DSP等),可重构硬件加速器件等,它们分别运行不同 的软、硬件任务。可重构硬件加速器将在处理器的控制下进行运行时重构,使得硬件逻辑变 得像软件一样灵活,但随之也带来了一些设计上的困难。由于传统的软硬件协同设计工具 并没有考虑系统的动态可重构特性,动态可重构系统的设计工作严重依赖于设计人员对可重构硬件细节的熟悉程度,要求设计人员必须具备丰富的开发经验和较高的专业素质,也 必然制约了此项技术在现实生活中的推广和应用。

发明内容
本发明的所要解决的技术问题是提供一种基于单位面积加速比的可重构资源管 理方法,采用该方法,较之现有的可重构资源管理的调度算法的复杂度低,且任务平均响应 时间方面的性能明显优于其他的现有的调度算法。为解决上述技术问题,本发明所采用的技术方案为一种基于单位面积加速比的可重构资源管理方法,该可重构资源管理方法应用在 可重构资源二维模型上,其特征在于,所述的单位面积加速比srpa用于表征计算任务分配 到可重构器件上执行时,所获得的加速比与所占用的可重构计算单元数目之比,定义为
_ = -f—^,其中w为占用可重构资源的宽度,h为占用可重构资源的高度,se为该计算
任务的软件执行时间,he为该计算任务的硬件执行时间;所述的基于单位面积加速比的可重构资源管理方法包括以下步骤第一步,将就绪任务队列Qr,按最迟执行时间d升序排列,并保存到一个双向链表 L1中;然后将就绪任务队列Qr按单位面积加速比降序排列,保存到另一个双向链表L2中;第二步,检查双向链表L2是否为空,如果为空则调度结束,否则进入下一步;第三步扫描任务就绪队列,根据每一个任务的截止时间和当前系统时间的差值 确定该任务为关键任务和非关键任务;如果截止时间和系统当前时间差值小于一个设定的 阈值,则该任务为关键任务,进入第四步,否则该任务为非关键任务,进入第五步;第四步调度关键任务;包括以下步骤根据双向链表L1,把链表的第一个任务作 为当前关键任务T;步骤1.对于当前的关键任务,判断硬件资源是否足够,如果是,则将当前任务放 入硬件任务配置队列中,并将当前任务从双向链表L1和L2中删除;返回第二步,否则进入 步骤2 ;步骤2.判断软件任务队列是否为空,如果为空,则将当前任务放入软件任务队列 中并将当前任务从双向链表L1和L2中删除,返回第二步;否则等待T1时间处理该任务,再 返回第二步;即时返回第二步,但是暂时不处理该任务,等到T1时间后再处理该任务。第五步调度非关键任务;步骤1)选取双向链表L2表头的任务作为当前任务T ;表头的任务,即排在第一 个的任务。步骤2)判断该当前任务的单位面积加速比是否大于阈值K;如果是,则进入步骤 3),否则跳到第五步的步骤4);步骤3)判断硬件资源是否足够,如果是,则将当前任务放入硬件任务配置队列中 并将该任务从双向链表L1和L2中删除,返回第二步;否则等待T1时间处理该任务,返回第 二步;即时返回第二步,但是暂时不处理该任务,等到T1时间后再处理该任务。步骤4)判断软件任务队列是否为空,如果为空,则将当前任务放入软件任务队列 中并将该任务从双向链表L1和L2中删除,返回第二步;否则等待T1时间处理该任务,返回第二步;即时返回第二步,但是暂时不处理该任务,等到T1时间后再处理该任务。T1的大小为0到d-e之间,其中d为任务截止时间,e为当前系统时间。超过任务截止时间,任务就调度失败,任务调度失败以后,就将任务取消,从任务调度就绪队列中删 除。发明的有益效果针对目前缺少一个由系统级设计到应用实现,统一、综合考虑动态重构问题的片上系统设计流程,以及动态重构过程对系统设计人员不透明等问题,本专利在系统设计层 给出了 一种过程级软硬件统一编程模型,在此框架内,系统设计人员通过调用已根据应用 特性进行优化的软硬件协同函数库,即可利用高级语言完成系统功能描述,从而缩减了系 统性能潜力与设计方法之间存在的鸿沟;在细节设计层,本发明提出了基于单位面积加速 比的软硬件任务调度方法,有效管理动态可重构资源。具体应用效果1.设计了一个随机任务调用器(该调用器属于通用知识故略)对基于单位面积加速比的软硬件任务调度策略进行测试,随机调用函数库里面的硬件函数。2.选择常用的最早最迟开始执行时间优先(ElstF)、最早有效时间优先(EVTF)和最早截止时间优先(EDF)三种任务在线调度策略进行比较。主要考察算法的任务平均响应 时间、芯片利用率、任务拒绝率三个方面性能。(举出的三种为,常见的三种算法)3.实验证明,在任务种类较多、任务密度较高、加速差异较大、实时性要求较宽松的系统中,基于单位面积加速比的任务调度策略,1)UASR(基于单位面积加速比的任务调度策略)方法在任务平均响应时间方面的性能明显优于其他三种调度算法。性能提高幅度达到20%左右,如图2所示。这是因为基 于单位面积计算比的任务调度策略在进行任务调度时,不仅考虑了任务硬件执行所带来的 受益(加速比),还考察了硬件执行过程中付出的资源代价。虽然没有直接提高芯片的利用 率,但是提高了单位面积芯片的使用效率,从而提高了系统的性能。随着任务类别的增多、 加速比和密度的增大,系统性能还会有进一步的提高。2)在芯片利用率、任务拒绝率方面的性能如图3,UASR方法较之其他3种算法无 明显差异。这是因为本文研究的调度算法集中在任务调度方面并不涉及到硬件任务放置优 化,不会对芯片利用率和任务拒绝率造成直接影响。当任务平均面积较小时,硬件资源充 足,芯片利用率不高;随着任务平均面积的增大,芯片利用率会逐渐增加;当任务平均面积 增大到一定程度后,片内无法使用的空闲区域增大,芯片利用率又会下降。硬件的任务拒绝 率则随任务平均面积的增加而增加。本技术的特点1.本发明的方法中,调度程序的启动时机有3种情况1)就绪队列Qr中有任务达到其最迟执行时间;2)有新任务到达系统;3)硬件配置队列Qh中有任务执行完毕。情况 1)对关键任务进行优先处理;情况2)和3)使能够获得硬件资源的有效任务尽早启动。因 此,本发明的方法结合了最早最迟开始时间优先算法和最早有效时间优先算法两个方面的 优点,能够有效的提高系统的总体性能。2.算法的复杂度调度算法的时间主要花销在对就绪任务队列的扫描上。通常,系统就绪任务队列中的任务数目会维持在一个常数b,调度算法运行的次数与达到系统的总任务数n相当,即0(n)。因此算法总的时间复杂度为0(bn)。由此可以知道该方法的复 杂度低于或者等于现有的各种调度算法。3.目前,部分可重构FPGA有两种资源模型如图1 :1) 一维模型,硬件函数可被布 局在水平方向上的任何位置,但在竖直方向上,每列不能同时存在一个以上的硬件任务,2) 二维模型,硬件函数的布局在水平和竖直方向上都没有限制,只要其所占区域不相互重叠。 本专利采用的是二维模型,能有效的利用可重构资源,并采用了单位面积加速比的概念,能 有效的对系统的性能进行评估。基于单位面积加速比的软硬件划分策略赋予了单位面积加速比较大的任务较高 的优先级和优先调度的权利。通过对任务的调度顺序作出适当的调整,提高了芯片使用效 率,提高了系统单位时间内处理的任务数量,降低了系统对任务的平均响应时间。


图1为可重构资源模型示意图;(图a为一维可重构资源模型示意图,图b为二维 可重构资源模型示意图。图2为多种调度方法的任务平均响应时间对比示意图;图3为多种调度方法的芯片利用率(图3a)、任务拒绝率(图3b)对比示意图;图4为主流程图;图5为关键任务处理的流程图;图6为非关键任务处理的流程图。
具体实施例方式以下结合附图对本发明作进一步说明。实施例1 本发明提出的基于单位面积加速比的软硬件调度算法的基本思想是在系统中维 护一个按任务优先级递减的就绪任务队列,调度器每次从就绪队列队头读取任务进行调 度,为其分配处理单元和相应的系统资源。初始时,任务的优先级与其单位面积加速比UASR 大小对应,加速比较大的任务拥有较高的优先级。考虑到任务的等待时间,采用优先级随时 间递增机制,每隔一段时间就将就绪队列中的任务的优先级增加一级。在线任务调度器的具体工作是在满足约束条件的前提下,从任务就绪队列中选取 单位面积加速比最大(或者大于某一数值)的任务分配给硬件执行,并将其加入到硬件配 置队列。对因资源不足而无法分配到硬件执行的任务,在不错过最迟执行时间的前提下,适 当推迟其调度时机。任务将要错过最迟执行时间仍然没有足够的可重构资源供使用(或者 任务单位面积加速比小于某一数值),将被分配给软件执行。如果硬件和软件分配都未成 功,任务可能会因为错过最迟执行时间而调度失败。基于单位面积加速比的软硬件划分策略赋予了单位面积加速比较大的任务较高 的优先级和优先调度的权利。通过对任务的调度顺序作出适当的调整,提高了芯片使用效 率,提高了系统单位时间内处理的任务数量,降低了系统对任务的平均响应时间。调度器在工作时会调用放置器为当前任务在可重构器件上寻找有效的放置位置 (即有效的配置区域),判断其能否成功配置。
具体方法实现算法(即本发明的方法)实现时,需要维护以下3种主要的数据结构a. Qr-就绪任务队列。该数据结构用于保存系统中已到达的、等待调度的任务的集
1=1 ob. Qh-硬件任务配置队列。该数据结构用于保存分配到可重构器件上执行的任务 的集合。如果系统有多个可重构器件,通常每个可重构器件都保留一个硬件任务配置队列。 配置器就是按照该队列中的任务序列来对可重构器件进行配置。c. Qs-软件任务加载队列。该数据结构用于保存分配到微处理器上执行的任务的 集合。同理,如果系统有多个微处理器,则每个微处理器都保留有一个软件任务加载队列, 供加载器进行软件加载工作。算法的伪码描述如下,为了简化问题,假设系统中只有一个微处理器和一个可重 构器件。任务调度前,还需要进行实时性检查,错过最迟执行时间的任务会调度失败并被撤
销。
算法:Scheduler (Qr)
1. foreach T G Qr with d-e_delta_time < current_time < = d_e
2.if Placer (T) = success
3.T- > Oh
4.else if 0s = NULL
5.T- > 0s
6.
7. foreach T G Or with d-e-delta-time > current-time (order bydescending)
8.if Placer (T) = success或:if uasr > certain_value
9.T- > Qhif Placer (T) = success
10.elseT- > Qh
11.Delay schedule T.else
12.Delay schedule T.
13.else if 0s = NULL
14.T- > 0s
15.else
16.Delay schedule T.
算法分为前后两部分,前半部分处理最迟执行时间即将到来的关键任务。
任务最迟执行时间是一个没有长度的概念,当其与系统当前时间相差小于某一固定时刻 (delta_time)时,就认为任务最迟调度时机到来。后半部分对其余的非关键任务进行调度。 其中,过程Placer (T)调用放置器算法对当前任务进行放置,放置成功返回success。对于 任务就绪队列Qr,每个任务添加4个指针,两个指针用于构造按最迟执行时间升序排列的 双向链表,方便查找将要错过最迟执行时间的任务;另外两个指针用于将就绪队列Qr组织 为按单位面积加速比降序排列的双向链表,方便查找单位面积加速比最大(或者大于某一 数值)的任务。对于软件任务加载队列Qs、硬件任务配置队列Qh,各维护一个按任务结束
7时间升序排列的链表,方便任务结束后的删除与资源回收操作。对于一个具体任务T(w,h,a, se, he, a, d,f)和最迟执行时间1st、单位面积加速 比UASR,其调度流程如下所述从任务T进入系统开始,一直到其调度成功(进入硬件配置 队列Qh或软件加载队列Qs)或者调度失败(Scheduling Fail)结束。系统时间curr_time 每次增加单位时间imit_time。当任务单位面积加速比大于某一数值且放置成功,任务将分 配给硬件执行,进入硬件配置队列;当任务单位面积加速比小于该数值,或者系统在任务最 迟执行时间到来之前没有足够的可重构资源供其配置,任务将被分配给软件执行,进入软 件加载队列;如果任务最迟执行时间已到来,微处理器和可重构器件都被占用,任务将会调 度失败。调度程序的启动时机有3种情况1)就绪队列Qr中有任务达到其最迟执行时间; 2)有新任务到达系统;3)硬件配置队列Qh中有任务执行完毕。情况1)对关键任务进行优 先处理;情况2)和3)使能够获得硬件资源的有效任务尽早启动。因此,本文算法结合了最 早最迟开始时间优先算法和最早有效时间优先算法两个方面的优点,能够有效的提高系统 的总体性能。调度算法的时间主要花销在对就绪任务队列的扫描上。通常,系统就绪任务队列 中的任务数目会维持在一个常数b,调度算法运行的次数与达到系统的总任务数n相当,即 O(n)。因此算法总的时间复杂度为0(bn)。设计了一个随机任务调用器对基于单位面积加速比的软硬件任务调度策略进行 测试,随机调用函数库里面的硬件函数,选择常用的最早最迟开始执行时间优先(ElstF)、 最早有效时间优先(EVTF)和最早截止时间优先(EDF)三种任务在线调度策略进行比较。 主要考察算法的任务平均响应时间、芯片利用率、任务拒绝率三个方面性能。实验证明,在 任务种类较多、任务密度较高、加速差异较大、实时性要求较宽松的系统中,基于单位面积 加速比的任务调度策略(UASR)在任务平均响应时间方面的性能明显优于其他三种调度算 法。性能提高幅度达到20%左右,如图2所示。这是因为基于单位面积计算比的任务调度 策略在进行任务调度时,不仅考虑了任务硬件执行所带来的受益(加速比),还考察了硬件 执行过程中付出的资源代价。虽然没有直接提高芯片的利用率,但是提高了单位面积芯片 的使用效率,从而提高了系统的性能。随着任务类别的增多、加速比和密度的增大,系统性 能还会有进一步的提高。在芯片利用率、任务拒绝率方面,UASR算法较之其他3种算法无明显差异,如图3 所示。这是因为本文研究的调度算法集中在任务调度方面并不涉及到硬件任务放置优化, 不会对芯片利用率和任务拒绝率造成直接影响。当任务平均面积较小时,硬件资源充足,芯 片利用率不高;随着任务平均面积的增大,芯片利用率会逐渐增加;当任务平均面积增大 到一定程度后,片内无法使用的空闲区域增大,芯片利用率又会下降。硬件的任务拒绝率则 随任务平均面积的增加而增加。本发明涉及的方法应用的硬件资源为支持二维模型的硬件平台,如xilinx公司 的Vllpro开发板。任务加速比(speed-up ratio)指计算任务的软件执行时间与硬件执行的比值, 定义为:sr = ie (se为任务的软件执行时间,he为任务的硬件执行时间)
单位面积加速比(Unit Area Speed-up Ratio, UASR)计算任务分配到可 重构器件上执行时,所获得的加速比与所占用的可重构计算单元数目之比,定义为
Srpa = ~h^h 为占用可重构资源的宽度,h为占用可重构资源的高度,se为软件执行
时间,he为硬件执行时间;)参数设置,d为任务的截止时间,e为当前系统时间。d-e为任务最迟执行时间(Lastest Starting Time, LST)。同时称最迟执行时间 来临的任务为关键任务(Critical Task)。任务响应时间(Task Response Time)指任务从到达系统到执行结束所经历的时 间,即f_a。任务平均响应时间指一段时间内,系统任务响应时间的平均值,定义为 1 n
fi为第i个任务执行完毕的时间,%为第i个任务到达系统的时间,n为调度
n /=0。
任务的个数。芯片利用率⑶(Chip Utilization)指在一段时间内,芯片被占用的计算资源面
积与芯片总面积的比值。定义为:<formula>formula see original document page 9</formula>其中为最后一个任务执行完毕的
时间,^为第一任务到达系统的时间。Wi为第i个任务占用资源的宽度,比为第i个任务 占用资源的高度,he,为第i个任务的硬件执行时间,W为芯片的宽度,H为芯片的高度。任务拒绝率TRR(Task Rejection Ratio)指一段时间内,芯片拒绝的任务与到达 芯片的任务总数之比。本发明是在软硬件协同函数库的基础上实施的,软硬件协同函数库的实现步骤和 实例如下一种软硬件协同函数库的构造方法,其特征在于,所述的软硬件协同函数库包括多个软硬件协同函数,每一个软硬件协同函数包括 头文件、具体函数实现文件和硬件配置文件;在具体函数实现文件中构造每一个具体函数的软件函数实现和硬件接口代码; 在软件函数实现和硬件接口代码中设置检测硬件函数执行时间或软件函数执行时间的代 码;在硬件配置文件具有通过硬件实现具体函数的硬件描述语言代码;在所述的头文件中声明多个具体函数的名称和参数形式;为程序调用具体的软件 函数实现和硬件接口代码提供统一的函数接口;调用软硬件协同函数时,在新建的程序文件中添加所需调用函数的头文件;在新 建的程序文件中采用函数名调用的方式,调用头文件提供的统一函数接口 ;在程序编译时 采用动态编译方式,在动态编译过程中根据划分算法选择该函数是调用软件函数实现或硬 件接口代码。检测硬件函数执行时间或软件函数执行时间为使用系统运行环境导出函数来实 现。
说明所述的划分算法可以采用任意的算法来实现,只要能实现选择是软件函数 实现或硬件接口代码的功能即可。比如,有一种算法,根据当前硬件是否空闲来决定,当硬 件空闲时,选择硬件实现即调用硬件接口代码。软硬件协同函数库设计的步骤为首先为软硬件协同函数声明一个对外接口(头文件中的函数声明);头文件如何 声明在具体例子中有体现。1.以软件编程方式实现函数的软件部分,该部分为一般软件描述方式。2.硬件接口代码的实现。硬件接口的标识是在软件接口标识前面增加了 1^_前 缀,区别协同函数软硬件的不同实现方式。3. 1从可重构资源管理器获取硬件模块端地址。利用系统函数mmap函数进行物理 地址(即获取到的地址)映射成虚拟地址。3. 2函数库包含一个init函数,该函数将在main函数调用前得到执行,它完成 两件事,一件是打开物理内存设备文件,为地址映射提供文件描述符参数;一件是调用dl_ get_Cfl_path函数获得当前软硬协同函数库的绝对路径,该函数也是动态链接器为编程模 型提供的接口,程序中值得注意的地方在于刚进入函数时调用三个系统导出函数,可以自 动测量和保存该硬件函数的执行时间,对于软件函数也有类似代码。3. 3其中必须必须声明一个执行参数传递和计算的函数,它获得虚拟地址后就能 与硬件通信。该函数执行的都是一些对寄存器的读写工作(寄存器读写对硬件开发人员是 熟知的过程),为了实现运行时应用程序划分改变,协同函数的指令在编译时不能直接编译 进应用程序的主文件,所以将软硬件协同函数库编译成共享库文件,即声明在头文件中。3. 4可重构资源管理器负责管理可重构资源,调度硬件加速器的配置与执行,它是 操作系统的一部分,作为内核驱动开发。我们仅为它提供编程接口。(只提供接口)将软件实现代码和硬件接口代码封装。封装封装的内容为软件实现代码和硬件 接口代码。封装打包具体实现为采用编译命令对所写好的.c文件(即3des. c)进行编译 (在 linux 系统中,编译命令为 gcc-fPIC-c*. Co Gcc-shared-wl, -soname, lib3des. so. 1_ olib3des. so. 1.0*.o,在其他系统中可以采用其他C的交叉编译器进行编译).通过编译以 后整个程序就被封装打包好,可供用户调用。用户可以通过封装好的统一接口进行调用硬 件接口函数,通过硬件配置文件,实现该功能的硬件部分。硬件实现的配置文件是采用硬件描述语言实现,通过硬件开发工具进行设置,具 体实现由所需实现功能相关。将软件函数和硬件接口代码封装在一起,并与硬件实现方式的配置文件一起构成 软硬件协同函数,这样即完成了一个软硬件协同函数的建立。要建立成库,则需多实现几个 软硬件协同函数即可。所述的软硬件协同函数可以采用包含头文件方式被其他程序调用,调用的步骤 为1.将软硬件协同函数库复制到开发工具的根目录下;2.在新建的程序文件中添加所需调用函数的头文件;3.在新建的程序文件中采用函数名调用的方式,调用头文件提供的统一函数接□。
4.在程序编译时采用动态编译方式,由程序运行环境依据当前情况选择软件或硬 件实现部分。本发明的提供的软硬件协同函数库的构造方法,包括以下步骤首先为软硬件协同函数声明一个对外接口(头文件中的函数声明);软硬件协同 函数是对同一功能的不同方式实现软件函数的实现是以软件编码方式实现,硬件的实现 则是由硬件接口代码和函数功能实现的硬件配置文件构成;将软件函数和硬件接口代码封 装在一起,并与硬件实现方式的配置文件一起构成软硬件协同函数,由多个软硬件协同函 数,形成一个抽象的软硬件协同函数库;形成的函数库可以在其他程序中调用。定义了一个头文件,在其中声明了软件函数和硬件接口函数提供一个统一的函数 调用接口,以便于用户调用。1)在协同函数的实现部分,硬件接口的标识是在软件接口标识前面增加了 1^_前 缀,区别协同函数软硬件的不同实现方式,以便系统在运行时依据当前运行情况选择软件 或硬件实现部分2)使用系统函数mmap将硬件模块实现部分的物理地址映射为虚拟地址,以便在 虚拟地址空间运行的硬件接口部分与硬件模块的具体实现部分通信。3)使用系统运行环境导出函数统计协同函数软件实现或硬件实现的执行时间,以 便为系统选择软件或硬件实现提供决策信息。4)声明一个执行参数传递和计算的函数用于在获得虚拟地址后就能与硬件通信。软件实现部分和硬件实现的接口部分打包到同一个共享库中,与硬件实现的配置 文件共同组成一个完整的协同函数。由多个软硬件协同函数组成软硬件协同函数库。软硬件协同函数库设计的实施例1 :本实例中,采用Eclipse开发工具进行设计,软件实体代码和硬件接口代码最后 都通过动态链接控制实现。动态链接控制主要是读取动态软硬件划分的决策结果,将应用 程序中对抽象函数的调用映射到具体的软件实体代码或硬件接口代码上。动态链接技术在 软件设计中早已广泛应用,高级程序设计语言也提供了相应的语法结构,如C语言中的函 数指针,C++中的虚函数等。对于不同的操作这里要链接的对象从外部看来无论软件、硬件 都体现为函数代码,因为我们对外提供的是一个统一的接口。(每个操作都被看成函数代 码,这是C语言程序设计的一个主要思想)首先给出一段DES的C程序代码(可扩展为其他语言),通过决策机制软硬件划 分算法,决定是采用封装好的硬件函数和接口函数或者是采用.h和.c的软件函数执行。本发明的操作过程是,任意一台现今主流配置的电脑作为开发工具,Eclipse作为开发工具。用户通过该开发工具进行嵌入式系统的设计,在开发过程中可以调用软硬件协 同函数库。第一步,开启电脑。第二步,打开Eclipse开发工具。第三步,将软硬件协同函数库拷贝到开发工具的根目录下,如“C:\EclipSe\”目录 下第三步,新建软件工程。第四步,添加程序源文件,并调用3des.h。调用的代码为
#include<3des. h>第五步,编写软硬件协同函数库测试函数。(测试函数主要是定义我所调用的函数 所需要的数据,并调用该函数)如调用的函数为一个加法函数add(a,b),那么在头文件已经包含的情况下我的测 试函数如下(这是一个标准的C语言程序)int main()int c, d, e ;c = 4;d = 5 ;e = add (c, d) ;// 调用该函数......第六步,进行工程的动态编译(动态编译为软件设计人员都熟知的过程)。实例1 函数实现具体实例3DES的实现过程1.设置头文件首先为3des函数声明一个对外接口(为简单起见,这里假设函数 只包含3des的加密和解密函数),它包含在3des. h文件中,应用程序包含此文件就能利用 库中函数实现完成编程;代码如下 /*3des. h*/——头文件名;#define ENCRYPT O#define DECRYPT 1typedef enum bool{false, true}bool ;extern bool tri_des_encrypt(char氺Out, char氺In, long datalen, const char*Key, int keylen);----定义力口密函数;extern bool tri_des_decrypt (char氺Out, char氺In, long datalen, const char氺Key,int keylen);—定义角军密函数;在一个文件对应具体函数的文件,具体函数如3des里面,同时包括软件实现和硬件接口代码。整个函数库就是一个文件。2.软件函数采用传统的软件方式实现(这里不详述)3.硬件接口代码的实现3. 1 int hw_tri_des_encrypt(char*0ut, char*In, long datalen, const char*Key,int keylen)函数即为接口函数,关键代码如下bool hw_tri_des_encrypt(char*0ut, char^In,long datalen,const char氺Key, intkeylen){......TripleDES(true, *datain,k
, k[l], k[2], dataout) ;//该处为调用参数 传递和计算函数}
......return true ;
}3. 2函数中包含一个init函数,该函数将在main函数调用前得到执行,它完成 两件事,一件是打开物理内存设备文件,将物理地址映射成虚拟地址;一件是调用dl_get_ cfl_path函数获得当前软硬协同函数库的绝对路径,该函数也是动态链接器为编程模型提 供的接口,在程序中值得注意的地方在于刚进入函数时调用了 dl_Update_time_front和 dl_get_time函数,在函数结尾时调用了 dl_hw_update_time函数,这些函数将自动测量和 保存该硬件函数的执行时间,对于软件函数也有类似代码.这些函数为系统函数,用以给 协同函数库开发人员提供相关信息。(以上三个函数为系统函数可以直接调用)关键代码 如下static void init(){now = &dl_get_time -J/ 保存系统当前时间upstime = &dl_sw_update_time ;// 保存软件部分执行时间uphtime = &dl_hw_update_time ;// 保存硬件部分执行时间......base_addr = mmap (0, XPAR_TRIPLEDES_0_HIGHADDR-XPAR_TRIPLEDES_0_ BASEADDR, PR0T_READ | PR0T_WRITE, MAP_SHARED, fd, XPAR_TRIPLEDES_0_BASEADDR) ;//将 物理地址映射成虚拟地址......return ;}3. 3 TripleDES为执行参数传递和计算的函数,它获得虚拟地址后就能与硬件通 信。该函数执行的都是一些对寄存器的读写工作,这是因为当前3DES硬件实现与总线接口 要通过IPIF为一个专(IPIF为专用名词,它是总线与IP核相连的接口),使用IPIF提供的 寄存器通信,这些寄存器的基地址与参数baSe_addr (在上面程序中提到该参数)对应的物 理地址相同。为了实现运行时应用程序划分改变,协同函数的指令在编译时不能直接编译 进应用程序的主文件,所以将软硬件协同函数库编译成共享库文件,即声明在3des.h中。 该过程使用过硬件开发工具的设计人员熟知,因此不再详述。3. 4可重构资源管理器负责管理可重构资源,调度硬件加速器的配置与执行,是操 作系统的一部分,作为内核驱动开发。因此我们为其提供了的编程接口如以下代码所示。 (通过该部分提高硬件函数的加速,我们仅提供接口具体实现由硬件设计人员设计)typedef struct address—range{unsigned long base ;unsighed long high ;} address—range ;// 地址范围address—range氺configure(char氺cfl—path,char氺
cf—relative—path,address—range氺phy—address,address—range氺ret—bal) ;// 配置资源int deconfigure (address—range氺phy_address) ;//释放资源void clean_config_info () ;//清除设置
5.利用编译命令对所写好的.c文件包含了软件函数和硬件接口代码(即3des. c)进行编译(在Iinux系统中编译命令为gcc-fPIC-c*. cGcc-shared-wl, -soname, lib3des. so. l-olib3des. so. 1. 0*. o,在其他系统中可 以采用其他C的交叉编译器进行编译)。6.硬件实现的配置文件采用传统的硬件开发工具如EDK等实现(这里不再详细叙 述)7.将这编译好的文件和硬件配置文件,保存到函数库文件夹即可。软硬件系统函数库调用实例该测试程序保存为3destest. c#include<stdio. h>#include<stdlib. h>#include<stririg. h>#include<memory. h> include" 3des.h〃 //该处为调用头文件int main (int argc, char氺argv[]){……//前面都是一些函数加密的参数设置tri_des_encrypt (buf, buf, sizeof (str), key, sizeof (key)) ;// 该处为调用协 同函数库中加密函数的统一对外接口……//这里都是一些函数解密的参数设置tri_des_decrypt (buf, buf, sizeof (str), key, sizeof (key)) ;//i亥 ^h ^jijfffi 十办 同函数库中解密函数的统一对外接口......return 0 ;}调用算法的自然语言描述为如果该函数满足硬件实施的条件(具体由划分算法的标准确定)则采用以下语句调用硬件实现hw_tri_des_encrypt (char*0ut,char*In,long datalen,const char*Key, intkeylen);否则,则釆用以下语句调用软件函数DES(char Out[8],char In[8],const PSubKey pSubKey,bool Type)。
权利要求
一种基于单位面积加速比的可重构资源管理方法,该可重构资源管理方法应用在可重构资源二维模型上,其特征在于,所述的单位面积加速比srpa用于表征计算任务分配到可重构器件上执行时,所获得的加速比与所占用的可重构计算单元数目之比,定义为 <mrow><mi>srpa</mi><mo>=</mo><mfrac> <mi>se</mi> <mrow><mi>he</mi><mo>&CenterDot;</mo><mi>w</mi><mo>&CenterDot;</mo><mi>h</mi> </mrow></mfrac><mo>,</mo> </mrow>其中w为占用可重构资源的宽度,h为占用可重构资源的高度,se为该计算任务的软件执行时间,he为该计算任务的硬件执行时间;所述的基于单位面积加速比的可重构资源管理方法包括以下步骤第一步,将就绪任务队列Qr,按最迟执行时间d升序排列,并保存到一个双向链表L1中;然后将就绪任务队列Qr按单位面积加速比降序排列,保存到另一个双向链表L2中;第二步,检查双向链表L2是否为空,如果为空则调度结束,否则进入下一步;第三步扫描任务就绪队列,根据每一个任务的截止时间和当前系统时间的差值确定该任务为关键任务和非关键任务;如果截止时间和系统当前时间差值小于一个设定的阈值,则该任务为关键任务,进入第四步,否则该任务为非关键任务,进入第五步;第四步调度关键任务;包括以下步骤根据双向链表L1,把链表的第一个任务作为当前关键任务T;步骤1.对于当前的关键任务,判断硬件资源是否足够,如果是,则将当前任务放入硬件任务配置队列中,并将当前任务从双向链表L1和L2中删除;返回第二步,否则进入步骤2;步骤2.判断软件任务队列是否为空,如果为空,则将当前任务放入软件任务队列中并将当前任务从双向链表L1和L2中删除,返回第二步;否则等待T1时间处理该任务,再返回第二步;第五步调度非关键任务;步骤1)选取双向链表L2表头的任务作为当前任务T;步骤2)判断该当前任务的单位面积加速比是否大于阈值K;如果是,则进入步骤3),否则跳到第五步的步骤4);步骤3)判断硬件资源是否足够,如果是,则将当前任务放入硬件任务配置队列中并将该任务从双向链表L1和L2中删除,返回第二步;否则等待T1时间处理该任务,返回第二步;步骤4)判断软件任务队列是否为空,如果为空,则将当前任务放入软件任务队列中并将该任务从双向链表L1和L2中删除,返回第二步;否则等待T1时间处理该任务,返回第二步;
2.根据权利要求1所述的基于单位面积加速比的可重构资源管理方法,其特征在于, T1的大小为0到d-e之间,其中d为任务截止时间,e为当前系统时间。
全文摘要
本发明提供了一种基于单位面积加速比的可重构资源管理方法,该可重构资源管理方法应用在可重构资源二维模型上,第一步,将任务就绪队列Qr按最迟执行时间d升序排列,并保存到L1中;然后将Qr按单位面积加速比降序排列,保存到L2中;第二步,检查L2,如果为空则调度结束,否则进入下一步;第三步扫描任务就绪队列,若该任务为关键任务,进入第四步,否则该任务为非关键任务,进入第五步;第四步调度关键任务;第五步调度非关键任务;采用该方法,较之现有的可重构资源管理的调度算法的复杂度低,且任务平均响应时间方面的性能明显优于其他的现有的调度算法。
文档编号G06F9/46GK101799770SQ20101002208
公开日2010年8月11日 申请日期2010年1月19日 优先权日2010年1月19日
发明者任小西, 刘彦, 刘滔, 吴强, 张维, 彭日光, 徐成, 朱海, 李仁发, 李春江, 李浪, 李肯立, 李蕊, 杨书凡, 杨科华, 罗娟, 袁虎, 赵欢, 邝继顺, 钟俊, 陈宇, 黄瑜臣 申请人:湖南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1