CN101799770A - 基于单位面积加速比的可重构资源管理方法 - Google Patents
基于单位面积加速比的可重构资源管理方法 Download PDFInfo
- Publication number
- CN101799770A CN101799770A CN201010022083A CN201010022083A CN101799770A CN 101799770 A CN101799770 A CN 101799770A CN 201010022083 A CN201010022083 A CN 201010022083A CN 201010022083 A CN201010022083 A CN 201010022083A CN 101799770 A CN101799770 A CN 101799770A
- Authority
- CN
- China
- Prior art keywords
- task
- hardware
- function
- software
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供了一种基于单位面积加速比的可重构资源管理方法,该可重构资源管理方法应用在可重构资源二维模型上,第一步,将任务就绪队列Qr按最迟执行时间d升序排列,并保存到L1中;然后将Qr按单位面积加速比降序排列,保存到L2中;第二步,检查L2,如果为空则调度结束,否则进入下一步;第三步:扫描任务就绪队列,若该任务为关键任务,进入第四步,否则该任务为非关键任务,进入第五步;第四步:调度关键任务;第五步:调度非关键任务;采用该方法,较之现有的可重构资源管理的调度算法的复杂度低,且任务平均响应时间方面的性能明显优于其他的现有的调度算法。
Description
技术领域
本发明属于计算机软件以及可重构资源技术领域,涉及一种基于单位面积加速比的可重构资源管理方法。
背景技术
传统嵌入式系统设计中,计算任务既能够通过对微处理器进行软件编程实现,也可以使用专用集成电路(Application Specific Integrated Circuit,ASIC)等硬件设备完成。高性能微处理器一般拥有一套属于自己的指令集,可通过软件编程灵活实现不同的计算任务,但是受到指令的编码和执行顺序,存储器访问瓶颈及固定的控制体系结构的限制,往往不能到达最高速度和最佳效率。ASIC是针对特定计算任务而专门设计的,设计电路的约束基本在物理层次上实现,可得到最优的运算速度和效率,但修改十分困难,更换到不同的工作环境或任务需求时,通常需要重新设计,也导致了ASIC的开发周期较长、开发成本过高、应用灵活性差等缺陷。
以现场可编程门阵列(Field Programming Gate Array,FPGA)为代表的可重构器件的出现促进了第三种计算模式—可重构计算的诞生。在此种新计算模式中,对数据的处理既不表现为通用计算模式中运行在微处理器上的程序指令,也不同于专用计算模式中被固化在ASIC芯片中运行的逻辑电路,而是以硬件配置文件的形式存在。进行计算之前,先利用相应的配置文件在可重构器件上搭建任务运行时依赖的逻辑电路,其功能可以通过加载不同的硬件配置文件而改变;一旦配置完成,便加载数据并处理,如同ASIC一样高效地工作。因此,可重构计算模式兼具了通用计算的灵活性和专用计算的高效性,是一种能够满足未来嵌入式应用市场复杂需求,且极具竞争力的技术解决方案。
可重构计算技术根据其重构过程的行为差异可分为静态重构和动态重构两类。静态重构是指系统运行前就一次性完成对整个可重构器件的配置,而在系统运行过程中,器件上的逻辑结构必须保持静态,不允许改变。动态重构是指系统运行时可按需求在线配置系统某些部分的电路结构,且其余部分仍不受影响地工作。动态重构技术利用了可重构器件支持多次重复配置和在线实时配置的特性,按照实际应用的计算需求分时复用,并实时调配可重构硬件上的资源,使用较少的硬件资源来实现复杂的逻辑电路功能,在提高系统执行速度的同时又有效降低了系统成本,尤其适合对运行速度和灵活性都有较高要求的应用,例如集成电路的计算机辅助设计、大数运算、目标识别、字符模式匹配、数据压缩、高速数字滤波器、图形图像、视频编解码、演化计算、定制计算、嵌入式系统设计等,应用前景非常广阔。
动态可重构计算系统通常是一个异构的并行计算环境,包括多种不同类型的处理单元,包括指令集处理器(GPP、ASIP、DSP等),可重构硬件加速器件等,它们分别运行不同的软、硬件任务。可重构硬件加速器将在处理器的控制下进行运行时重构,使得硬件逻辑变得像软件一样灵活,但随之也带来了一些设计上的困难。由于传统的软硬件协同设计工具并没有考虑系统的动态可重构特性,动态可重构系统的设计工作严重依赖于设计人员对可重构硬件细节的熟悉程度,要求设计人员必须具备丰富的开发经验和较高的专业素质,也必然制约了此项技术在现实生活中的推广和应用。
发明内容
本发明的所要解决的技术问题是提供一种基于单位面积加速比的可重构资源管理方法,采用该方法,较之现有的可重构资源管理的调度算法的复杂度低,且任务平均响应时间方面的性能明显优于其他的现有的调度算法。
为解决上述技术问题,本发明所采用的技术方案为:
一种基于单位面积加速比的可重构资源管理方法,该可重构资源管理方法应用在可重构资源二维模型上,其特征在于,所述的单位面积加速比srpa用于表征计算任务分配到可重构器件上执行时,所获得的加速比与所占用的可重构计算单元数目之比,定义为: 其中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相当,即O(n)。因此算法总的时间复杂度为O(bn)。由此可以知道该方法的复杂度低于或者等于现有的各种调度算法。
3.目前,部分可重构FPGA有两种资源模型如图1:1)一维模型,硬件函数可被布局在水平方向上的任何位置,但在竖直方向上,每列不能同时存在一个以上的硬件任务,2)二维模型,硬件函数的布局在水平和竖直方向上都没有限制,只要其所占区域不相互重叠。本专利采用的是二维模型,能有效的利用可重构资源,并采用了单位面积加速比的概念,能有效的对系统的性能进行评估。
基于单位面积加速比的软硬件划分策略赋予了单位面积加速比较大的任务较高的优先级和优先调度的权利。通过对任务的调度顺序作出适当的调整,提高了芯片使用效率,提高了系统单位时间内处理的任务数量,降低了系统对任务的平均响应时间。
附图说明
图1为可重构资源模型示意图;(图a为一维可重构资源模型示意图,图b为二维可重构资源模型示意图。
图2为多种调度方法的任务平均响应时间对比示意图;
图3为多种调度方法的芯片利用率(图3a)、任务拒绝率(图3b)对比示意图;
图4为主流程图;
图5为关键任务处理的流程图;
图6为非关键任务处理的流程图。
具体实施方式:
以下结合附图对本发明作进一步说明。
实施例1:
本发明提出的基于单位面积加速比的软硬件调度算法的基本思想是在系统中维护一个按任务优先级递减的就绪任务队列,调度器每次从就绪队列队头读取任务进行调度,为其分配处理单元和相应的系统资源。初始时,任务的优先级与其单位面积加速比UASR大小对应,加速比较大的任务拥有较高的优先级。考虑到任务的等待时间,采用优先级随时间递增机制,每隔一段时间就将就绪队列中的任务的优先级增加一级。
在线任务调度器的具体工作是在满足约束条件的前提下,从任务就绪队列中选取单位面积加速比最大(或者大于某一数值)的任务分配给硬件执行,并将其加入到硬件配置队列。对因资源不足而无法分配到硬件执行的任务,在不错过最迟执行时间的前提下,适当推迟其调度时机。任务将要错过最迟执行时间仍然没有足够的可重构资源供使用(或者任务单位面积加速比小于某一数值),将被分配给软件执行。如果硬件和软件分配都未成功,任务可能会因为错过最迟执行时间而调度失败。
基于单位面积加速比的软硬件划分策略赋予了单位面积加速比较大的任务较高的优先级和优先调度的权利。通过对任务的调度顺序作出适当的调整,提高了芯片使用效率,提高了系统单位时间内处理的任务数量,降低了系统对任务的平均响应时间。
调度器在工作时会调用放置器为当前任务在可重构器件上寻找有效的放置位置(即有效的配置区域),判断其能否成功配置。
具体方法实现
算法(即本发明的方法)实现时,需要维护以下3种主要的数据结构:
a.Qr-就绪任务队列。该数据结构用于保存系统中已到达的、等待调度的任务的集合。
b.Qh-硬件任务配置队列。该数据结构用于保存分配到可重构器件上执行的任务的集合。如果系统有多个可重构器件,通常每个可重构器件都保留一个硬件任务配置队列。配置器就是按照该队列中的任务序列来对可重构器件进行配置。
c.Qs-软件任务加载队列。该数据结构用于保存分配到微处理器上执行的任务的集合。同理,如果系统有多个微处理器,则每个微处理器都保留有一个软件任务加载队列,供加载器进行软件加载工作。
算法的伪码描述如下,为了简化问题,假设系统中只有一个微处理器和一个可重构器件。任务调度前,还需要进行实时性检查,错过最迟执行时间的任务会调度失败并被撤销。
算法:Scheduler(Qr)
1.foreach T∈Qr with d-e-delta_time<current_time<=d-e
2. if Placer(T)=success
3. T->Oh
4. else if Os=NULL
5. T->Os
6.
7.foreach T∈Or with d-e-delta-time>current-time (order by srpua descending)
8. if Placer(T)=success 或:if uasr>certain_value
9. T->Qh if Placer(T)=success
10. else T->Qh
11. Delay schedule T. else
12. Delay schedule T.
13. else if Os=NULL
14. T->Os
15. else
16. Delay schedule T.
算法分为前后两部分,前半部分处理最迟执行时间即将到来的关键任务。由于任务最迟执行时间是一个没有长度的概念,当其与系统当前时间相差小于某一固定时刻(delta_time)时,就认为任务最迟调度时机到来。后半部分对其余的非关键任务进行调度。其中,过程Placer(T)调用放置器算法对当前任务进行放置,放置成功返回success。对于任务就绪队列Qr,每个任务添加4个指针,两个指针用于构造按最迟执行时间升序排列的双向链表,方便查找将要错过最迟执行时间的任务;另外两个指针用于将就绪队列Qr组织为按单位面积加速比降序排列的双向链表,方便查找单位面积加速比最大(或者大于某一数值)的任务。对于软件任务加载队列Qs、硬件任务配置队列Qh,各维护一个按任务结束时间升序排列的链表,方便任务结束后的删除与资源回收操作。
对于一个具体任务T(w,h,a,se,he,a,d,f)和最迟执行时间lst、单位面积加速比UASR,其调度流程如下所述:从任务T进入系统开始,一直到其调度成功(进入硬件配置队列Qh或软件加载队列Qs)或者调度失败(Scheduling Fail)结束。系统时间curr_time每次增加单位时间unit_time。当任务单位面积加速比大于某一数值且放置成功,任务将分配给硬件执行,进入硬件配置队列;当任务单位面积加速比小于该数值,或者系统在任务最迟执行时间到来之前没有足够的可重构资源供其配置,任务将被分配给软件执行,进入软件加载队列;如果任务最迟执行时间已到来,微处理器和可重构器件都被占用,任务将会调度失败。
调度程序的启动时机有3种情况:1)就绪队列Qr中有任务达到其最迟执行时间;2)有新任务到达系统;3)硬件配置队列Qh中有任务执行完毕。情况1)对关键任务进行优先处理;情况2)和3)使能够获得硬件资源的有效任务尽早启动。因此,本文算法结合了最早最迟开始时间优先算法和最早有效时间优先算法两个方面的优点,能够有效的提高系统的总体性能。
调度算法的时间主要花销在对就绪任务队列的扫描上。通常,系统就绪任务队列中的任务数目会维持在一个常数b,调度算法运行的次数与达到系统的总任务数n相当,即O(n)。因此算法总的时间复杂度为O(bn)。
设计了一个随机任务调用器对基于单位面积加速比的软硬件任务调度策略进行测试,随机调用函数库里面的硬件函数,选择常用的最早最迟开始执行时间优先(ElstF)、最早有效时间优先(EVTF)和最早截止时间优先(EDF)三种任务在线调度策略进行比较。主要考察算法的任务平均响应时间、芯片利用率、任务拒绝率三个方面性能。实验证明,在任务种类较多、任务密度较高、加速差异较大、实时性要求较宽松的系统中,基于单位面积加速比的任务调度策略(UASR)在任务平均响应时间方面的性能明显优于其他三种调度算法。性能提高幅度达到20%左右,如图2所示。这是因为基于单位面积计算比的任务调度策略在进行任务调度时,不仅考虑了任务硬件执行所带来的受益(加速比),还考察了硬件执行过程中付出的资源代价。虽然没有直接提高芯片的利用率,但是提高了单位面积芯片的使用效率,从而提高了系统的性能。随着任务类别的增多、加速比和密度的增大,系统性能还会有进一步的提高。
在芯片利用率、任务拒绝率方面,UASR算法较之其他3种算法无明显差异,如图3所示。这是因为本文研究的调度算法集中在任务调度方面并不涉及到硬件任务放置优化,不会对芯片利用率和任务拒绝率造成直接影响。当任务平均面积较小时,硬件资源充足,芯片利用率不高;随着任务平均面积的增大,芯片利用率会逐渐增加;当任务平均面积增大到一定程度后,片内无法使用的空闲区域增大,芯片利用率又会下降。硬件的任务拒绝率则随任务平均面积的增加而增加。
本发明涉及的方法应用的硬件资源为支持二维模型的硬件平台,如xilinx公司的VIIpro开发板。
任务加速比(speed-up ratio):指计算任务的软件执行时间与硬件执行的比值,定义为: (se为任务的软件执行时间,he为任务的硬件执行时间)
单位面积加速比(Unit Area Speed-up Ratio,UASR):计算任务分配到可重构器件上执行时,所获得的加速比与所占用的可重构计算单元数目之比,定义为: (w为占用可重构资源的宽度,h为占用可重构资源的高度,se为软件执行时间,he为硬件执行时间;)
参数设置,d为任务的截止时间,e为当前系统时间。
d-e为任务最迟执行时间(Lastest Starting Time,LST)。同时称最迟执行时间来临的任务为关键任务(Critical Task)。
任务响应时间(Task Response Time):指任务从到达系统到执行结束所经历的时间,即f-a。
任务平均响应时间:指一段时间内,系统任务响应时间的平均值,定义为: fi为第i个任务执行完毕的时间,ai为第i个任务到达系统的时间,n为调度任务的个数。
芯片利用率CU(Chip Utilization):指在一段时间内,芯片被占用的计算资源面积与芯片总面积的比值。定义为: 其中fl为最后一个任务执行完毕的时间,a1为第一任务到达系统的时间。wi为第i个任务占用资源的宽度,hi为第i个任务占用资源的高度,hei为第i个任务的硬件执行时间,W为芯片的宽度,H为芯片的高度。
任务拒绝率TRR(Task Rejection Ratio):指一段时间内,芯片拒绝的任务与到达芯片的任务总数之比。
本发明是在软硬件协同函数库的基础上实施的,软硬件协同函数库的实现步骤和实例如下:
一种软硬件协同函数库的构造方法,其特征在于,
所述的软硬件协同函数库包括多个软硬件协同函数,每一个软硬件协同函数包括头文件、具体函数实现文件和硬件配置文件;
在具体函数实现文件中构造每一个具体函数的软件函数实现和硬件接口代码;在软件函数实现和硬件接口代码中设置检测硬件函数执行时间或软件函数执行时间的代码;
在硬件配置文件具有通过硬件实现具体函数的硬件描述语言代码;
在所述的头文件中声明多个具体函数的名称和参数形式;为程序调用具体的软件函数实现和硬件接口代码提供统一的函数接口;
调用软硬件协同函数时,在新建的程序文件中添加所需调用函数的头文件;在新建的程序文件中采用函数名调用的方式,调用头文件提供的统一函数接口;在程序编译时采用动态编译方式,在动态编译过程中根据划分算法选择该函数是调用软件函数实现或硬件接口代码。
检测硬件函数执行时间或软件函数执行时间为使用系统运行环境导出函数来实现。
说明:所述的划分算法可以采用任意的算法来实现,只要能实现选择是软件函数实现或硬件接口代码的功能即可。比如,有一种算法,根据当前硬件是否空闲来决定,当硬件空闲时,选择硬件实现即调用硬件接口代码。
软硬件协同函数库设计的步骤为:
首先为软硬件协同函数声明一个对外接口(头文件中的函数声明);头文件如何声明在具体例子中有体现。
1.以软件编程方式实现函数的软件部分,该部分为一般软件描述方式。
2.硬件接口代码的实现。硬件接口的标识是在软件接口标识前面增加了hw_前缀,区别协同函数软硬件的不同实现方式。
3.1从可重构资源管理器获取硬件模块端地址。利用系统函数mmap函数进行物理地址(即获取到的地址)映射成虚拟地址。
3.2函数库包含一个init函数,该函数将在main函数调用前得到执行,它完成两件事,一件是打开物理内存设备文件,为地址映射提供文件描述符参数;一件是调用dl_get_cfl_path函数获得当前软硬协同函数库的绝对路径,该函数也是动态链接器为编程模型提供的接口,程序中值得注意的地方在于刚进入函数时调用三个系统导出函数,可以自动测量和保存该硬件函数的执行时间,对于软件函数也有类似代码。
3.3其中必须必须声明一个执行参数传递和计算的函数,它获得虚拟地址后就能与硬件通信。该函数执行的都是一些对寄存器的读写工作(寄存器读写对硬件开发人员是熟知的过程),为了实现运行时应用程序划分改变,协同函数的指令在编译时不能直接编译进应用程序的主文件,所以将软硬件协同函数库编译成共享库文件,即声明在头文件中。
3.4可重构资源管理器负责管理可重构资源,调度硬件加速器的配置与执行,它是操作系统的一部分,作为内核驱动开发。我们仅为它提供编程接口。(只提供接口)
将软件实现代码和硬件接口代码封装。封装:封装的内容为软件实现代码和硬件接口代码。封装打包具体实现为:采用编译命令对所写好的.c文件(即3des.c)进行编译(在linux系统中,编译命令为gcc-fPIC-c*.c。Gcc-shared-wl,-soname,lib3des.so.l_olib3des.so.1.0*.o,在其他系统中可以采用其他C的交叉编译器进行编译).通过编译以后整个程序就被封装打包好,可供用户调用。用户可以通过封装好的统一接口进行调用硬件接口函数,通过硬件配置文件,实现该功能的硬件部分。
硬件实现的配置文件是采用硬件描述语言实现,通过硬件开发工具进行设置,具体实现由所需实现功能相关。
将软件函数和硬件接口代码封装在一起,并与硬件实现方式的配置文件一起构成软硬件协同函数,这样即完成了一个软硬件协同函数的建立。要建立成库,则需多实现几个软硬件协同函数即可。
所述的软硬件协同函数可以采用包含头文件方式被其他程序调用,调用的步骤为:
1.将软硬件协同函数库复制到开发工具的根目录下;
2.在新建的程序文件中添加所需调用函数的头文件;
3.在新建的程序文件中采用函数名调用的方式,调用头文件提供的统一函数接口。
4.在程序编译时采用动态编译方式,由程序运行环境依据当前情况选择软件或硬件实现部分。
本发明的提供的软硬件协同函数库的构造方法,包括以下步骤:
首先为软硬件协同函数声明一个对外接口(头文件中的函数声明);软硬件协同函数是对同一功能的不同方式实现:软件函数的实现是以软件编码方式实现,硬件的实现则是由硬件接口代码和函数功能实现的硬件配置文件构成;将软件函数和硬件接口代码封装在一起,并与硬件实现方式的配置文件一起构成软硬件协同函数,由多个软硬件协同函数,形成一个抽象的软硬件协同函数库;形成的函数库可以在其他程序中调用。
定义了一个头文件,在其中声明了软件函数和硬件接口函数提供一个统一的函数调用接口,以便于用户调用。
1)在协同函数的实现部分,硬件接口的标识是在软件接口标识前面增加了hw_前缀,区别协同函数软硬件的不同实现方式,以便系统在运行时依据当前运行情况选择软件或硬件实现部分
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 0
#define DECRYPT 1
typedef 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*Out,char*In,long datalen,const char*Key,int keylen)函数即为接口函数,关键代码如下:
bool hw_tri_des_encrypt(char*Out,char*In,long datalen,const char*Key,intkeylen)
{
……
TripleDES(true,*datain,k[0],k[1],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;//保存系统当前时间
upstime=&dl_sw_update_time;//保存软件部分执行时间
uphtime=&dl_hw_update_time;//保存硬件部分执行时间
……
base_addr=mmap(0,XPAR_TRIPLEDES_0_HIGHADDR-XPAR_TRIPLEDES_0_BASEADDR,PROT_READ|PROT_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)进行编译(在linux系统中编译命令为gcc-fPIC-c*.c
Gcc-shared-wl,-soname,lib3des.so.l-olib3des.so.1.0*.o,在其他系统中可以采用其他C的交叉编译器进行编译)。
6.硬件实现的配置文件采用传统的硬件开发工具如EDK等实现(这里不再详细叙述)
7.将这编译好的文件和硬件配置文件,保存到函数库文件夹即可。
软硬件系统函数库调用实例:该测试程序保存为3destest.c
#include<stdio.h>
#include<stdlib.h>
#include<string.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));//该处为调用协同函数库中解密函数的统一对外接口
……
return 0;
}
调用算法的自然语言描述为:
如果该函数满足硬件实施的条件(具体由划分算法的标准确定)
则采用以下语句调用硬件实现:
hw_tri_des_encrypt(char*Out,char*In,long datalen,const char*Key,intkeylen);
否则,则采用以下语句调用软件函数:
DES(char Out[8],char In[8],const PSubKey pSubKey,bool Type);。
Claims (2)
1.一种基于单位面积加速比的可重构资源管理方法,该可重构资源管理方法应用在可重构资源二维模型上,其特征在于,所述的单位面积加速比srpa用于表征计算任务分配到可重构器件上执行时,所获得的加速比与所占用的可重构计算单元数目之比,定义为: 其中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为当前系统时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010100220836A CN101799770B (zh) | 2010-01-19 | 2010-01-19 | 基于单位面积加速比的可重构资源管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010100220836A CN101799770B (zh) | 2010-01-19 | 2010-01-19 | 基于单位面积加速比的可重构资源管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101799770A true CN101799770A (zh) | 2010-08-11 |
CN101799770B CN101799770B (zh) | 2012-07-25 |
Family
ID=42595454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010100220836A Expired - Fee Related CN101799770B (zh) | 2010-01-19 | 2010-01-19 | 基于单位面积加速比的可重构资源管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101799770B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018214285A1 (zh) * | 2017-05-25 | 2018-11-29 | 深圳市百富智能新技术有限公司 | 管理支付终端硬件模块的方法、装置及计算机可读存储介质 |
CN108958923A (zh) * | 2017-05-25 | 2018-12-07 | 上海华为技术有限公司 | 一种调度硬件加速器的方法以及调度设备 |
CN110018887A (zh) * | 2018-01-10 | 2019-07-16 | 苏州智配信息科技有限公司 | 一种可重构平台上的任务调度和资源管理算法 |
CN111880933A (zh) * | 2020-07-27 | 2020-11-03 | 北京神舟航天软件技术有限公司 | 一种基于异构计算平台的可重构硬件任务动态分配方法 |
CN112732634A (zh) * | 2021-01-07 | 2021-04-30 | 重庆邮电大学 | 面向边缘计算的arm-fpga协同硬件资源局部动态重构处理方法 |
CN113190497A (zh) * | 2021-04-09 | 2021-07-30 | 珠海市一微半导体有限公司 | 一种可重构处理器的任务处理方法及可重构处理器 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100351792C (zh) * | 2004-08-23 | 2007-11-28 | 中兴通讯股份有限公司 | 一种实时任务管理与调度方法 |
CN101561768A (zh) * | 2008-04-18 | 2009-10-21 | 北京闻言科技有限公司 | 一种通用的调度多个任务的方法 |
CN101339521B (zh) * | 2008-07-28 | 2011-04-20 | 华中科技大学 | 一种任务优先级动态调度算法 |
CN101431467B (zh) * | 2008-12-18 | 2010-12-01 | 中国人民解放军国防科学技术大学 | 共享资源网络的实时任务接纳控制方法 |
-
2010
- 2010-01-19 CN CN2010100220836A patent/CN101799770B/zh not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018214285A1 (zh) * | 2017-05-25 | 2018-11-29 | 深圳市百富智能新技术有限公司 | 管理支付终端硬件模块的方法、装置及计算机可读存储介质 |
CN108958923A (zh) * | 2017-05-25 | 2018-12-07 | 上海华为技术有限公司 | 一种调度硬件加速器的方法以及调度设备 |
CN110018887A (zh) * | 2018-01-10 | 2019-07-16 | 苏州智配信息科技有限公司 | 一种可重构平台上的任务调度和资源管理算法 |
CN111880933A (zh) * | 2020-07-27 | 2020-11-03 | 北京神舟航天软件技术有限公司 | 一种基于异构计算平台的可重构硬件任务动态分配方法 |
CN111880933B (zh) * | 2020-07-27 | 2023-09-22 | 北京神舟航天软件技术有限公司 | 一种基于异构计算平台的可重构硬件任务动态分配方法 |
CN112732634A (zh) * | 2021-01-07 | 2021-04-30 | 重庆邮电大学 | 面向边缘计算的arm-fpga协同硬件资源局部动态重构处理方法 |
CN112732634B (zh) * | 2021-01-07 | 2022-12-27 | 重庆邮电大学 | 面向边缘计算的arm-fpga协同局部动态重构处理方法 |
CN113190497A (zh) * | 2021-04-09 | 2021-07-30 | 珠海市一微半导体有限公司 | 一种可重构处理器的任务处理方法及可重构处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN101799770B (zh) | 2012-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Grandpierre et al. | From algorithm and architecture specifications to automatic generation of distributed real-time executives: a seamless flow of graphs transformations | |
Augonnet et al. | StarPU: a unified platform for task scheduling on heterogeneous multicore architectures | |
Singh et al. | Kiwi: Synthesis of FPGA circuits from parallel programs | |
Steiger et al. | Operating systems for reconfigurable embedded platforms: Online scheduling of real-time tasks | |
Hormati et al. | Sponge: portable stream programming on graphics engines | |
Thoen et al. | Modeling, verification and exploration of task-level concurrency in real-time embedded systems | |
CN101799770B (zh) | 基于单位面积加速比的可重构资源管理方法 | |
US10789397B2 (en) | Computer-implemented method of performing parallelized electronic-system level simulations | |
Kapasi et al. | Stream scheduling | |
Danne et al. | An EDF schedulability test for periodic tasks on reconfigurable hardware devices | |
Ventroux et al. | SESAM/Par4All: a tool for joint exploration of MPSoC architectures and dynamic dataflow code generation | |
Paul et al. | High-level modeling and simulation of single-chip programmable heterogeneous multiprocessors | |
Schuh et al. | A study of predictable execution models implementation for industrial data-flow applications on a multi-core platform with shared banked memory | |
Daiß et al. | Stellar mergers with HPX-Kokkos and SYCL: methods of using an asynchronous many-task runtime system with SYCL | |
Posadas et al. | POSIX modeling in SystemC | |
US20140325516A1 (en) | Device for accelerating the execution of a c system simulation | |
Alur et al. | RTComposer: a framework for real-time components with scheduling interfaces | |
Guan et al. | Schedulability analysis of preemptive and nonpreemptive EDF on partial runtime-reconfigurable FPGAs | |
Ventroux et al. | Scmp architecture: an asymmetric multiprocessor system-on-chip for dynamic applications | |
Niknam et al. | Resource optimization for real-time streaming applications using task replication | |
Jovanovic et al. | ILP-based memory-aware mapping optimization for MPSoCs | |
Deng et al. | A reconfigurable RTOS with HW/SW co-scheduling for SOPC | |
Jordans et al. | Automatic instruction-set architecture synthesis for VLIW processor cores in the ASAM project | |
Kaouane et al. | SysCellC: Systemc on cell | |
Tuveri et al. | On-the-fly adaptivity for process networks over shared-memory platforms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120725 Termination date: 20210119 |