一种可重构平台上的任务调度和资源管理算法的制作方法

文档序号:18188410发布日期:2019-07-17 05:28阅读:205来源:国知局
一种可重构平台上的任务调度和资源管理算法的制作方法

本发明涉及动态调度技术领域,尤其涉及一种可重构平台上的任务调度和资源管理算法。



背景技术:

可重构平台上的调度算法根据其执行特点可以分为三类,具体如下:

(1)on-demand调度:on-demand调度是最简单的调度方式之一,在这种方式中,根据任务主动发出的请求进行重构,对于暂时不能立即满足的重构请求,则利用队列对重构请求进行缓存。当应用程序调用一个硬件任务时,重构请求被发送给操作系统,如果执行任务的硬件己经在上,则直接执行该任务;否则,如果平台上有足够的硬件资源布局该硬件任务,则直接进行布局布线,如果没有足够的资源,则将重构请求缓存,直到上有足够的空闲的可重构资源。硬件请求可以采用两种不同的方式执行,一种是以阻塞的方式执行,即从硬件请求开始到硬件重构完成这段时间内操作系统无法执行其他任务,这种方式会导致每次重构的开销很大,浪费了系统的计算能力;另外一种方式是以非阻塞的方式执行,当重构请求当前无法满足时,将硬件任务设为睡眠状态,当系统中存在足够的资源进行重构时,将硬件任务从睡眠状态唤醒,从而尽可能隐藏重构开销,提高对系统资源的利用率,以提升系统的整体性能。

(2)静态调度:静态调度通常是釆用离线剖析、编译制导等静态手段,分析应用程序中的热点任务,在任务开始执行之前就确定了重构时机以及发生重构的任务类型。静态重构能够获得应用的整体视图,因而可以进行比较复杂的设计空间搜索,找到比较理想的重构方案和任务调度方案,其性能通常要优于on-demand调度和动态调度。然而静态调度通常要求应用本身具有可预测性,即应用中每个任务的执行时机、每个任务的输入输出数据的大小、每个任务的执行时间以及任务之间的依赖关系等都是可以预测的。除此之外,任务使用的硬件资源、在硬件上的执行时间等信息也需要是确定的,在实际应用中,通常只有一些用于特殊设备的嵌入式应用能够同时满足这些限制,除此之外,如果系统中存在多个并发或者并行的应用,单独对某个应用进行态调度并不能给出合理的调度结果,因此静态调度的适用场景受到了很大限制,单纯利用静态调度已经很难满足实际需要。

(3)动态调度。动态调度利用系统运行时信息进行任务调度。任务之间的依赖关系、系统负载、系统中任务的特征等因素都会对动态调度的结果产生影响。动态调度特别适用于系统中存在并发的应用以及应用的执行特征无法静态确定等情况,动态调度在进行调度决策时并不是针对某一个应用,而是针对系统中所有的应用,因此其使用范围也更广。



技术实现要素:

本发明所解决的技术问题在于提供一种可重构平台上的任务调度和资源管理算法,包括可重构fpga平台,所述方法包括以下步骤:

开始:对任务进行处理;

任务绑定:将所述任务绑定至处理器;

长睡眠:当没有空闲黑盒子时,算法由所述任务绑定状态进入长睡眠状态,长睡眠结束后,重新进入所述任务绑定状态;

短睡眠:当有空闲黑盒子但是没有黑盒子能够完成当前所述任务,且进入所述短睡眠的次数少于阈值时,算法由所述任务绑定状态进入所述短睡眠状态,短睡眠结束后,重新进入所述任务绑定状态;

重构:当算法进入短睡眠的次数达到阈值以后,从所述任务绑定状态进入到重构状态,将最久未使用的黑盒子重构为能够执行当前所述硬件任务的ip核;

执行任务:当其中一个黑盒子可以执行所述任务时,向所述黑盒子发送数据,开始所述任务的执行过程;

结束:所述任务执行结束后,通过中断返回数据。

进一步的是,所述任务包括软件任务和/硬件任务。

进一步的是,所述任务包括n个,每个所述任务ti的起始时间为si,结束时间为ei,所述方法的优化目标是求如下方程的最优任务调度及重构策略f:

公式(1)

每个所述任务ti直接依赖的任务集合定义为该任务的前驱集pi,约束关系定义为:

公式(2)

如果当前正在执行的硬件任务集合为d,fpga资源总量为source,则资源约束定义为:

(3)

将资源抽象为黑盒子,保证每一个黑盒子包含的资源数量都足够完成所述任务,则公式(3)可以简化为:

(4),

其中b为所述黑盒子集合;

当满足时,触发任务调度及重构策略;

所述任务的执行之间用公式:(6)

表示,

任务的后继任务数目近似表示为:(7),

其中nr表示目前所有就绪的硬件任务的后继任务总和;

就绪任务的优先级表示为:

(8);

每次调度时,选择优先级最大的任务执行。

进一步的是,其中所述公式(3)中,所述g表示每个任务所占用的资源;所述fpga包含查找表、ram、io以及布线资源等多类资源。

进一步的是,所述短睡眠状态不占用处理器资源。

本发明的可重构平台上的任务调度和资源管理算法,是借助于可重构fpga平台,加速任务的执行过程,从而有效减少任务的执行时间;特别适用于系统中存在并发的应用以及应用的执行特征无法静态确定等情况,使用范围更广。

附图说明

图1为本发明的可重构平台上的任务调度和资源管理算法的流程图。

具体实施方式

下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

如图1所示,本发明提供一种可重构平台上的任务调度和资源管理算法,包括可重构fpga平台,所述方法包括以下步骤:

步骤一、开始:对任务进行处理;

步骤二、任务绑定:将所述任务绑定至处理器;

步骤三、长睡眠:当没有空闲黑盒子时,算法由所述任务绑定状态进入长睡眠状态,长睡眠结束后,重新进入所述任务绑定状态;

步骤四、短睡眠:当有空闲黑盒子但是没有黑盒子能够完成当前所述任务,且进入所述短睡眠的次数少于阈值时,算法由所述任务绑定状态进入所述短睡眠状态,短睡眠结束后,重新进入所述任务绑定状态;

步骤五、重构:当算法进入短睡眠的次数达到阈值以后,从所述任务绑定状态进入到重构状态,将最久未使用的黑盒子重构为能够执行当前所述硬件任务的ip核;

步骤六、执行任务:当其中一个黑盒子可以执行所述任务时,向所述黑盒子发送数据,开始所述任务的执行过程;

步骤七、结束:所述任务执行结束后,通过中断返回数据。

具体的,所述任务包括软件任务和/硬件任务。

本发明采用函数库的形式对软件任务和硬件任务进行了封装。首先,我们定义了硬件任务集和定制软件任务集。

硬件任务集:调用上某个己经布局的核的任务的集合,硬件任务集中的任务同时包含功能信息和位置信息,表示为“功能_位置”。

定制软件任务集:与硬件任务集中功能对应的软件任务所组成的集合。定制软件任务集中的任务只包含功能信息,而不包含位置信息。

虽然硬件任务本身不可以抢占但是硬件函数库中的函数在执行过程中是可以被抢占的,即所有的函数接口在使用过程中可以被同等看待,从而提升了系统的可扩展性和易用性。硬件函数库对程序员屏蔽了硬件任务的位置信息,以服务的形式供程序员调用,程序员不需要关心完成当前硬件任务的ip核是否已经布局或者在fpga的布局位置。

动态部分可重构平台在每次重构时可以只重构的一部分,针对该特点,本文设计了基于独立窗口的任务调度和资源管理算法。

为了充分发挥可重构资源的计算能力,在本小节提出基于独立窗口的任务调度和可重构资源管理算法,其基本思想包含以下三个方面:

(1)每个黑盒子具有自己独立的窗口,每个黑盒子的重构过程是独立的,黑盒子之间的重构互不影响;

(2)任务调度算法与资源管理算法紧密结合,保证每次重构请求都能得到响应,在每次重构请求时,都需要保证请求是有效的;

(3)在进行任务绑定时,需要保证在绑定的过程中所有的黑盒子都没有被重构,否则绑定过程中获取的ip核类型信息是“脏数据”。因此,任务绑定的过程需要保证是时间开销很小。

黑盒子的集合为b,b中每个元素记为li,系统中有m个黑盒子,则有b={li|i=1,2,…,m}。b中的每个元素用四元组<ipcore_type,busy,predict_time,last_intr_time>表示,其中ipcore_type表示ip核的类型,busy表示该黑盒子上的ip核目前是否被占用,predict_time表示该ip核的预计完成时间,last_intr_time表示该黑盒子上最后一次硬件任务完成的时间。基于独立窗口的任务调度资源管理算法中定义了如下参数:

htime数组:记录硬件任务的执行时间,该时间是任务在核上从任务数据准备好到任务执行完产生中断的时间,并不包含传输开销。

sleep_state:算法运行过程中的睡眠状态,分为长睡眠(long_sleep)和短睡眠(short_sleep)。

sleep_time:算法睡眠的时间。

current_time:当前时间。

max_try_times:短睡眠最大尝试次数,即短睡眠阈值。

det:短睡眠的时间。

基于独立窗口的任务调度资源管理算法的形式化描述如下算法所示。

作为本发明的优选实施例,所述任务包括n个,每个所述任务ti的起始时间为si,结束时间为ei,所述方法的优化目标是求如下方程的最优任务调度及重构策略f:

公式(1)

每个所述任务ti直接依赖的任务集合定义为该任务的前驱集pi,约束关系定义为:

公式(2)

如果当前正在执行的硬件任务集合为d,fpga资源总量为source,则资源约束定义为:

(3)

将资源抽象为黑盒子,保证每一个黑盒子包含的资源数量都足够完成所述任务,则公式(3)可以简化为:

(4),

其中b为所述黑盒子集合;其中,所述g表示每个任务所占用的资源;所述fpga包含查找表、ram、io以及布线资源等多类资源;

当满足时,触发任务调度及重构策略;

所述任务的执行之间用公式:(6)

表示,

任务的后继任务数目近似表示为:(7),

其中nr表示目前所有就绪的硬件任务的后继任务总和;

就绪任务的优先级表示为:

(8);

每次调度时,选择优先级最大的任务执行。

更进一步的,所述短睡眠状态不占用处理器资源。

本发明的可重构平台上的任务调度和资源管理算法,是借助于可重构fpga平台,加速任务的执行过程,从而有效减少任务的执行时间;特别适用于系统中存在并发的应用以及应用的执行特征无法静态确定等情况,使用范围更广。

以上所述,仅是本发明的最佳实施例而已,并非对本发明作任何形式上的限制,任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,利用上述揭示的方法内容对本发明技术方案做出许多可能的变动和修饰,均属于权利要求保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1