CN101630274B - 一种实现对循环任务进行软硬件划分的方法和装置 - Google Patents

一种实现对循环任务进行软硬件划分的方法和装置 Download PDF

Info

Publication number
CN101630274B
CN101630274B CN200910090401XA CN200910090401A CN101630274B CN 101630274 B CN101630274 B CN 101630274B CN 200910090401X A CN200910090401X A CN 200910090401XA CN 200910090401 A CN200910090401 A CN 200910090401A CN 101630274 B CN101630274 B CN 101630274B
Authority
CN
China
Prior art keywords
node
scheduling
operator
input node
obtains
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.)
Expired - Fee Related
Application number
CN200910090401XA
Other languages
English (en)
Other versions
CN101630274A (zh
Inventor
刘雷波
王延升
尹首一
于苏东
魏少军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Pango Microsystems Co Ltd
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN200910090401XA priority Critical patent/CN101630274B/zh
Publication of CN101630274A publication Critical patent/CN101630274A/zh
Application granted granted Critical
Publication of CN101630274B publication Critical patent/CN101630274B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种实现对循环任务进行软硬件划分的方法和装置,属于嵌入式系统领域。当可重构阵列当前执行数据流的节点个数大于可重构阵列的规模时,所述方法包括:对所述可重构阵列当前执行数据流的节点进行算子调度;根据算子调度结果,获得输入节点的自由度;获得所述输入节点的输出个数;根据获得的所述输入节点的自由度、获得的所述输入节点的输出个数,获取自由度最高且输出个数最少的输入节点;将获取的输入节点划分到主处理器。本发明提供的方法,扩大了可重构处理器可执行的循环体的规模,发挥了可重构阵列善于执行循环任务的特点,减少了整个应用程序执行的时间,满足了实际应用中的需要。

Description

一种实现对循环任务进行软硬件划分的方法和装置
技术领域
本发明涉及嵌入式系统领域,特别涉及一种实现对循环任务进行软硬件划分的方法和装置。
背景技术
芯片集成度的日益提高,使得一个芯片内可以集成大量的功能模块,形成片上系统芯片。在集成的功能模块中往往包含了处理器模块和硬件加速模块,如何让处理器与硬件加速模块能够协同工作,是片上系统芯片的软硬件协同设计需要解决的一个问题。而软硬件划分是软硬件协同设计的基础,将一个应用程序划分给处理器和硬件加速模块分别执行。其中,处理器执行的部分称为“软件”部分,硬件加速模块执行的部分称为“硬件”部分。软硬件划分的好坏将直接影响到最终软硬件协同设计的结果,并对系统的性能、功耗、面积等关键指标产生重要的影响。
其中,可重构处理器由主处理器和可重构阵列构成。如图1所示,可重构处理器的软硬件划分是指将应用程序划分为在主处理器上执行的软件部分和在可重构阵列上执行的硬件部分。通常情况下,主处理器运行应用程序的控制部分和计算量相对较小的部分,而可重构阵列运行应用中的计算量相对较大的部分。可重构阵列善于执行循环任务,但对循环体的规模有一定的限制,一般需要循环体的规模小于等于可重构阵列的物理规模。当循环体的规模满足该要求,且循环的执行次数较多时,可重构阵列可以对循环任务进行加速,从而减少整个应用的执行时间。所以,将一个应用程序在可重构处理器上进行软硬件划分时,会将循环体规模较小的循环任务划分给可重构阵列,在其上进行映射和执行。
发明人在实现本发明的过程中发现,现有技术至少存在以下缺点:限制了循环体的规模,当循环体规模大于可重构阵列的物理规模时,循环体便不能一次全部映射到可重构阵列上,无法发挥可重构阵列善于执行循环任务的特点,增加了整个应用程序执行的时间。
发明内容
为了使大规模的循环体能映射到可重构阵列上,加快循环任务执行的速度,减少应用程序执行的时间,提高用户的使用体验,本发明实施例提供了一种实现对循环任务进行软硬件划分的方法和装置,所述技术方案如下:
一种实现对循环任务进行软硬件划分的方法,当可重构阵列当前执行数据流的节点个数大于可重构阵列的规模时,所述方法包括:
步骤C1:对所述可重构阵列当前执行数据流的节点进行算子调度;
步骤C2:根据算子调度结果,获得输入节点的自由度;
步骤C3:获得所述输入节点的输出个数;
步骤C4:根据步骤C2获得的所述输入节点的自由度、步骤C3获得的所述输入节点的输出个数,获取自由度最高且输出个数最少的输入节点;
步骤C5:将步骤C4获取的输入节点划分到主处理器。
所述步骤C5还包括:更新所述主处理器和所述可重构阵列,重复执行步骤C1至C5,直到所述可重构阵列当前执行数据流的节点个数小于等于可重构阵列的规模为止。
所述步骤C2包括:
步骤C21:对所述当前执行数据流的节点进行第一算子调度;
步骤C22:对所述当前执行数据流的节点进行第二算子调度;
相应地,所述步骤C2具体包括:根据步骤C22获得的调度中的节点所在的时钟周期和步骤C21获得的调度中的节点所在的时钟周期,获得输入节点的自由度。
根据步骤C22获得的调度中的节点所在的时钟周期和步骤C21获得的调度中的节点所在的时钟周期,获得输入节点的自由度具体为:
输入节点的自由度=“第二算子调度中节点的时钟周期-第一算子调度中节点的时钟周期+1”,
其中,所述第一算子调度为“尽可能早”算子调度,所述第二算子调度为“尽可能晚”算子调度。
当所述步骤C4获取的输入节点为多个时;所述步骤C5包括:将编号最小的一个输入节点划分到主处理器。
一种实现对循环任务进行软硬件划分的装置,当可重构阵列当前执行数据流的节点个数大于可重构阵列的规模时,所述装置包括:
调度模块,用于对所述可重构阵列当前执行数据流的节点进行算子调度;
第一获得模块,用于根据所述调度模块的调度结果,获得输入节点的自由度;
第二获得模块,用于获得输入节点的输出个数;
获取模块,用于根据所述第一获得模块获得的输入节点的自由度、所述第二获得模块获得的输入节点的输出个数,获取自由度最高且输出最少的输入节点;
划分模块,用于将所述获取模块获取的输入节点划分到主处理器。
所述装置还包括:处理模块;
所述处理模块用于更新所述主处理器和所述可重构阵列,直到所述可重构阵列当前执行数据流的节点小于所述可重构阵列的规模为止。
所述调度模块具体包括:
第一调度单元,用于对所述当前执行数据流的节点进行第一算子调度;
第二调度单元,用于对所述当前执行数据流的节点进行第二算子调度;
相应地,所述第一获得模块具体用于:根据所述第二调度单元获得的调度中的节点所在的时钟周期和所述第一调度单元获得的调度中的节点所在的时钟周期,获得输入节点的自由度。
当所述获取模块获取的输入节点为多个时;所述划分模块具体用于将所述获取模块获取的输入节点中编号最小的一个输入节点划分到主处理器。
本发明实施例提供的技术方案的有益效果是:通过将输入节点划分到主处理器,发挥了可重构阵列善于执行循环任务的特点,扩大了循环体的规模,减少了整个应用程序执行的时间,满足了实际应用中的需要。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术提供的可重构处理器的软硬件划分框图;
图2是本发明实施例提供的算子调度的示意图;
图3是本发明实施例提供的待划分的循环体的数据流图,以及第1次算子调度结果的示意图;
图4是本发明实施例提供的第1次划分结果的示意图;
图5是本发明实施例提供的第2次算子调度结果的示意图;
图6是本发明实施例提供的第2次划分结果的示意图;
图7是本发明实施例提供的一种实现对循环任务进行软硬件划分的流程图;
图8是本发明实施例1提供的一种实现对循环任务进行软硬件划分方法的流程图;
图9是本发明实施例2提供的一种实现对循环任务进行软硬件划分装置的示意图;
图10是本发明实施例2提供的一种实现对循环任务进行软硬件划分装置的具体示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在基于算子调度对应用程序进行软硬件划分时,将数据流图,在时间域上进行划分,确定每一个算子执行时间的早晚和相互间的顺序。算子调度从算子执行时间早晚的角度出发,可分为“尽可能早”算子调度和“尽可能晚“算子调度。“尽可能早”算子调度将所有算子尽可能早的执行;相反,“尽可能晚”算子调度将所有算子尽可能晚的执行。图2给出了一个简单的数据流图,其中各个算子均可在一个时钟周期内完成,算子调度的流程如下:
1、在数据流图中找出关键路径,关键路径为在所有的输入到输出的路径中,执行时间最长,即算子个数最多的路径,关键路径上的算子不在调度之列,将其按照执行的顺序分配到各个时钟周期。
其中,参见图2,图2中的关键路径为“1→2→3→4→5→6”,算子“1”、“2”、“3”、“4”、“5”、“6”分别被分配到第1、2、3、4、5、6个时钟周期。
2、对于非关键路径上的算子,“尽可能早”算子调度将算子尽可能早的执行。参见图2,算子“8”可以在第1至5个时钟周期之间的任一时钟周期执行,算子“7”可以在第3、4个时钟周期执行(由于从路径服从关键路径的调度关系,算子“7”的输入来自算子“2”的输出,算子“2”位于第2时钟周期,即,算子“7”可以位于第2时钟周期后的周期,而,算子“5”的输入来自算子“7”的输出,算子“5”位于第5个时钟周期,即算子“7”只能位于第5时钟周期以上的时钟周期,综上,即算子“7”可以位于第3、4时钟周期。),根据“尽可能早”算子调度,算子“8”被分配到第1个时钟周期执行;算子“7”被分配到第3个时钟周期;相反,“尽可能晚”算子调度将算子尽可能晚的执行,参见图2算子“8”被分配到第5个时钟周期执行;算子“7”被分配到第4个时钟周期。
其中,自由度代表算子可以在不同的时钟周期中被执行的自由程度,可以由“尽可能早”算子调度和“尽可能晚”算子调度的结果计算得到。其中,算子自由度的计算公式为“‘尽可能晚算子调度中算子的时钟周期’-‘尽可能早算子调度中算子的时钟周期’+1”。所以,关键路径上的所有算子的自由度均为1。即,图2中算子“1”、“2”、“3”、“4”、“5”、“6”的自由度为1,算子“7”的自由度为2(具体为,4-3+1=2),算子“8”的自由度为5(具体为5-1+1=5)。
基于上述算法,本发明提出了一种实现对循环任务进行软硬件划分的方法和装置,该方法对规模较大循环任务的循环体进行软硬件划分,将循环体任务的一部分放在主处理器上执行,另一部分放在可重构阵列上执行,其中,为了便于说明,将上述算子定义为节点,将“尽可能早”算子调度定义为第一算子调度,将“尽可能晚”算子调度定义为第二算子调度。
其中,对循环任务进行软硬件划分方法遵循以下四个规则:
一、软硬件划分应使在可重构阵列上执行的节点尽可能的多。
能充分发挥可重构阵列硬件加速的功能,根据此原则,在进行软硬件划分之前,先默认所有的节点都在可重构阵列上执行。
二、在将节点从可重构阵列上划分出去,到主处理器上执行时,应使得划分之后增加的数据传输量(即,可重构阵列和主处理器之间通信的数据传输量)尽可能的小。
其中,对于数据流图中的三类节点:输入节点、输出节点、中间节点,划分时应选取划分后增加的数据传输量最小的输入节点。输入节点的定义为:只能来自接收外部节点的输入;输出节点的定义为:只能输出给外部节点。
其中,输入节点被划分出去后增加的数据传输量均为1个单位(例如1个16位的数据),即使被划分出去的输入节点的输出的数据传输量为n个单位(n>1),但这n个单位的数据相同,所以主处理器只需传输给可重构阵列1个单位的数据,在可重构阵列得到数据后,将其调用n次即可。
其中,输出节点被划分出去后增加的数据传输量至少为1个单位,因为输出节点的输入的数据传输量至少为1个单位,并且一旦大于1个单位,这些数据将各不相同,所以在将输出节点划分出去之后,可重构阵列需向主处理器传输至少1个单位的数据。
其中,中间节点被划分出去后增加的数据传输量至少为2个单位,因为中间节点的输入的数据传输量至少为1个单位,输出的数据传输量也至少为1个单位,所以将中间节点划分出去后,增加的数据传输量至少为2个单位,其中1个来自于可重构阵列向主处理器传输的数据,另1个来自于主处理器向可重构阵列传输的数据。
将上述输入节点、输出节点、中间节点划分出去后所增加的数据传输量进行比较,将划分后数据传输量增加最小的输入节点选择为划分对象。
其中,在选取输入节点进行划分时,还应优先选择输出少的输入节点。
输出少的输入节点在被划分出去之后,若其子节点在下一次划分中也被划分出去,则第一次将输入节点划分出去增加的数据传输量将有机会减小。
参见图3,例如图3中的节点5,其输出为1,将其划分出去之后增加的数据传输量为“节点5至节点8”的1个单位,再将其子节点8划分出去之后,增加的数据传输量为“节点8至节点11”的1个单位,但同时消除了上一次划分产生的“节点5至节点8”的1个单位的数据传输量(其中,将节点5和节点8看做一个整体)。总的来说,采用这种划分方法,将节点5和节点8划分出去以后,数据传输量增加了1;而对于节点2而言,其输出为2,将其划分出去之后增加的数据传输量为“节点2至节点6和节点9”的1个单位(节点2传给节点6和节点9的数据是相同的,因此增加的数据传输量为1个单位)。再将其子节点6划分出去之后,增加的数据传输量为“节点6至节点9”的1个单位的数据传输量。加上上一次划分产生的“节点2至节点9”的1个单位的数据传输量,总的数据传输量增加了2。所以,比较这两种划分方法,将节点5先划分出去将产生较小的数据传输量。因此,在选取输入节点进行划分时,应优先选择输出少的输入节点。
三、在将节点划分到主处理器上时,应避免数据传输的双向性,保持数据传输的单向性。
其中,对于中间节点,若将其划分到主处理器上,该节点既需要来自可重构阵列的数据作为输入,又需要将自己的输出提供给可重构阵列作为输入。这将增加主处理器和可重构阵列之间的依赖性,减少两部分单独执行时的灵活性,降低可重构阵列执行循环任务的性能。
其中,划分时既选择输入节点,又选择输出节点,也将增加两部分之间的依赖性。所以,划分的对象不能同时为输入节点和输出节点,又出于原则2中数据传输量的考量,因此,选取划分的对象为输入节点。
四、在将节点划分到主处理器上执行时,应优先考虑自由度高的节点。
其中,自由度高的节点对关键路径的影响小,将其划分到主处理器上将最小程度的影响关键路径的长度;相反,自由度低的节点对关键路径的影响大,关键路径上的节点恰说明了这点。关键路径上的节点自由度最低,将其划分到主处理器上执行,除了将带来额外的数据传输时间之外,主处理器上的执行速度也将慢于可重构阵列上的执行速度。这都将增加关键路径的长度,降低可重构阵列执行循环任务的性能。其中,在选取节点划分时,选取自由度高的节点的优先级将高于选取数据传输量小的节点的优先级。
根据以上四个规则,构造划分算法,参见图7,图7是本发明实施例提供的对循环任务进行软硬件划分的流程图,其中,C1为对可重构阵列当前执行数据流的节点进行算子调度;C2为根据算子调度结果,获得输入节点的自由度;C3为获得输入节点的输出个数;C4为根据步骤C2获得的输入节点的自由度、步骤C3获得的输入节点的输出个数,获取自由度最高且输出个数最少的输入节点;C5为将步骤C4获取的输入节点划分到主处理器。
其中,输入和输出具体为:
输入:循环体的数据流图G{V,E},其中V为节点,E为两个节点之间有向的连接关系;
输出:在可重构阵列上执行的数据流图G1{V1,E1}、在主处理器上执行的数据流图G2{V2,E2}。
算法的伪代码如下:
G1=G;//其中,G1=G为默认所有的节点都在可重构阵列上执行。
while(G1的节点个数大于阵列的规模)
{
对G1进行“尽可能早”算子调度;
对G1进行“尽可能晚”算子调度;
由两次算子调度结果得到G1输入节点的自由度;
计算G1输入节点的输出个数;
遍历G1所有输入节点,获得自由度最高的一组输入节点;
遍历G1所有自由度最高的输入节点,找出输出最少的一组输入节点;
划分一个输出最少的节点到G2;
更新G1、G2;
}
其中,当满足自由度最高且输出最少的输入节点为多个时,选择将编号小的一个节点划分到主处理器G2。例如,节点“2”、节点“5”的自由度最高,都为2,输出个数最少,都为1,则将节点“2”划分到主处理器G2。
实施例1
下面以一个具体实施例来说明划分算法的执行过程,具体执行过程如下:
以可重构阵列的规模为4x4为例,即,最大能支持16个节点的映射。其中,G1代表可重构阵列,G2代表主处理器。
参见图3中的原图,为待划分的循环体的数据流图,图中共有18个节点。
图8为本发明实施例提供的对循环任务进行软硬件划分方法的流程图,参见图8。
步骤S1:先默认所有的节点都在G1上执行。
即,G1=18,G2=0。
步骤S2:判断G1上的节点数是否大于G1所能支持的最大节点数,如果G1上的节点数大于G1所能支持的最大节点数,则,执行步骤S 3;否则不对数据流图进行划分。
其中,以图3为例,G1=18,而G1所能支持的最大节点数为16,由于18>16,故执行步骤S3,使用本发明所提供的方法对可重构阵列G1上的节点进行划分。其中,关键路径为2条,分别为“1→3→7→10→13→15→17”和“1→4→7→10→13→15→17”。
步骤S3:对G1进行“尽可能早”算子调度,得到调度后的数据流图。
其中,调度后的数据流图如图3左图所示,根据“尽可能早”算子调度,以及从路径必须服从关键路径的调度关系,将节点“2”、节点“5”分配到第1个时钟周期;将节点“6”、节点“8”分配到第2个时钟周期;将节点“9”、节点“11”分配到第3个时钟周期;将节点“12”分配到第4个时钟周期;节点“14”分配到第5个时钟周期;由于节点“14”分配到第5个时钟周期,故节点“16”分配到第6个时钟周期;节点“18”分配到第8个时钟周期。
步骤S4:对G1进行“尽可能晚”算子调度,得到调度后的数据流图。
其中,调度后的数据流图如图3右图所示,根据“尽可能晚”算子调度,以及从路径必须服从关键路径的调度关系,将节点“18”分配到第8个时钟周期;将节点“16”分配到第7个时钟周期;将节点“14”、节点“12”分配到第6个时钟周期;将节点“11”、节点“9”分配到第5个时钟周期;将节点“6”、节点“8”分配到第4个时钟周期;将节点“2”、节点“5”分配到第3个时钟周期。
步骤S5:根据步骤S 3,步骤S4的调度结果,计算G1输入节点的自由度。
其中,参见图3,输入节点为“1”、“2”、“5”,根据左图和右图,得出节点1的自由度为1,节点2的自由度为3,节点5的自由度为3。
步骤S6:计算输入节点的输出个数。
其中,参见图3,输入节点“1”的输出为节点“3”、节点“4”,即2个输出;输入节点“2”的输出为节点“6”、节点“9”,即2个输出;输入节点“5”的输出为节点“8”,即1个输出。
步骤S7:从步骤S5中获取输入节点中自由度最高的节点。
其中,节点1的自由度为1,节点2的自由度为3,节点5的自由度为3,即,节点5的自由度最高。
步骤S8:根据步骤S6、S7获取自由度最高的输入节点中输出最少的节点。
其中,自由度最高的输入节点中输出个数最少的节点为节点5。
步骤S9:将步骤S8中获取到的输出个数最少的节点划分到主处理器G2上。
其中,将节点5划分到主处理器G2上。
步骤S10:更新G1、G2。
其中,更新后的G1、G2如图4所示,图4中的粗体箭头代表可重构阵列和主处理之间的数据传输;
步骤S11:判断更新后的G1上的节点数是否大于G1所能支持的最大节点数如果更新后的G1节点数大于G1所能支持的最大节点数,则,执行步骤S12;否则不对节点进行划分。
参考图5,更新后的G1上的节点数为17,G1所能支持的最大节点数为16,由于17>16,故执行步骤S12,继续使用本发明所提供的方法对G1上的节点进行划分。
步骤S12:对更新后的G1进行“尽可能早”算子调度,得到调度后的数据流图。
其中,调度后的数据流图如图5左图所示,根据“尽可能早”算子调度,以及从路径必须服从关键路径的调度关系,将节点“2”、“8”分配到第1个时钟周期;将节点“6”、“11”分配到第2个时钟周期;将节点“9”分配到第3个时钟周期;将节点“12”分配到第4个时钟周期;将节点“14”分配到第5个时钟周期;将节点“16”分配到第6个时钟周期;将节点“18”分配到第8个时钟周期;
步骤S13:对更新后的G1进行“尽可能晚”算子调度,得到调度后的数据流图。
其中,调度后的数据流图如图5右图所示,根据“尽可能晚”算子调度,以及从路径必须服从关键路径的调度关系,将节点“18”分配到第8个时钟周期;将节点“16”分配到第7个时钟周期;将节点“14”、节点“12”分配到第6个时钟周期;将节点“11”、节点“9”分配到第5个时钟周期;将节点“6”、节点“8”分配到第4个时钟周期;将节点“2”分配到第3个时钟周期。
步骤S14:根据步骤S12,步骤S13的调度结果,计算更新后的G1输入节点的自由度。
其中,参见图5,输入节点为“1”、“2”、“8”,根据图5的左图和右图,得出节点1的自由度为1,节点2的自由度为3,节点8的自由度为4。
步骤S15:计算输入节点的输出个数。
其中,参见图5,输入节点“1”的输出为节点“3”、节点“4”,即2个输出;输入节点“2”的输出为节点“6”、节点“9”,即2个输出;输入节点“8”的输出为节点“11”,即1个输出。
步骤S16:从步骤S15中,获取输入节点中自由度最高的节点。
其中,节点1的自由度为1,节点2的自由度为3,节点8的自由度为4,即,节点8的自由度最高。
步骤S17:获取自由度最高的输入节点中输出个数最少的节点。
其中,自由度最高的输入节点中输出个数最少的节点为节点8。
步骤S18:将步骤S17中获取到的输出最少的节点划分到G2上。
其中,将节点8划分到G2上。
步骤S19:第二次更新G1、G2。
其中,第二次更新后的G1、G2如图6所示,图6中的粗体箭头代表两部分之间的数据传输。
步骤S20:如果第二次更新后的G1上的节点数大于G1所能支持的最大节点数,继续对可重构阵列进行划分,直到可重构阵列上的节点数小于等于可重构阵列的规模为止。
参见图6,更新后的G1上的节点数为16,G1所能支持的最大节点数为16,即无需进行划分,执行结束。
本发明实施例提供的方法发挥了可重构阵列善于执行循环任务的特点,加快了运算的速度,满足了实际应用中的需要。
实施例2
参见图9,为本发明实施例提供的一种实现对循环任务进行软硬件划分的装置示意图,图10为本发明实施例提供的一种实现对循环任务进行软硬件划分的装置具体示意图,用于对规模较大的循环体进行软硬件划分,包括:
调度模块101,用于对可重构阵列当前执行数据流的节点进行算子调度。
其中,具体包括:
第一调度单元101A,用于对当前执行数据流的节点进行第一算子调度;
第二调度单元101B,用于对当前执行数据流的节点进行第二算子调度;
相应地,调度模块具体包括:根据第二调度单元获得的调度中的节点所在的时钟周期和第一调度单元获得的调度中的节点所在的时钟周期,获得输入节点的自由度。
第一获得模块102,用于根据调度模块的调度结果,获得输入节点的自由度;
第二获得模块103,用于获得输入节点的输出个数;
获取模块104,用于根据第一获得模块获得的输入节点的自由度、第二获得模块获得的输入节点的输出个数,获取自由度最高且输出最少的输入节点;
划分模块105,用于将获取模块获取的输入节点划分到主处理器。
处理模块106,用于更新主处理器和可重构阵列,直到可重构阵列当前执行数据流的节点小于可重构阵列的规模为止。
当获取模块获取的输入节点为多个时;划分模块具体用于将获取模块获取的输入节点中编号最小的一个输入节点划分到主处理器。
本发明实施例提供的装置发挥了可重构阵列善于执行循环任务的特点,加快了运算的速度,减少了程序运行的时间,满足了实际应用中的需要。
综上所述,本发明实施例提出的一种软硬件划分循环任务的方法和装置,当循环体规模大于可重构阵列的物理规模时,通过对规模较大的循环体进行软硬件划分,发挥了可重构阵列善于执行循环任务的特点,加快了运算的速度,减少了程序运行的时间,满足了实际应用中的需要。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种实现对循环任务进行软硬件划分的方法,其特征在于,当可重构阵列当前执行数据流的节点个数大于可重构阵列的规模时,所述方法包括:
步骤C1:对所述可重构阵列当前执行数据流的节点进行算子调度;
步骤C2:根据算子调度结果,获得输入节点的自由度;
步骤C3:获得所述输入节点的输出个数;
步骤C4:根据步骤C2获得的所述输入节点的自由度、步骤C3获得的所述输入节点的输出个数,获取自由度最高且输出个数最少的输入节点;
步骤C5:将步骤C4获取的输入节点划分到主处理器。
2.如权利要求1所述的方法,其特征在于,所述步骤C5还包括:更新所述主处理器和所述可重构阵列,重复执行步骤C1至C5,直到所述可重构阵列当前执行数据流的节点个数小于等于可重构阵列的规模为止。
3.如权利要求1所述的方法,其特征在于,所述步骤C2包括:
步骤C21:对所述当前执行数据流的节点进行第一算子调度;
步骤C22:对所述当前执行数据流的节点进行第二算子调度;
相应地,所述步骤C2具体包括:根据步骤C22获得的调度中的节点所在的时钟周期和步骤C21获得的调度中的节点所在的时钟周期,获得输入节点的自由度。
4.如权利要求3所述的方法,其特征在于,根据步骤C22获得的调度中的节点所在的时钟周期和步骤C21获得的调度中的节点所在的时钟周期,获得输入节点的自由度具体为:
输入节点的自由度=“第二算子调度中节点的时钟周期-第一算子调度中节点的时钟周期+1”,
其中,所述第一算子调度为“尽可能早”算子调度,所述第二算子调度为“尽可能晚”算子调度。
5.如权利要求1所述的方法,其特征在于,当所述步骤C4获取的输入节点为多个时;
所述步骤C5包括:将编号最小的一个输入节点划分到主处理器。
6.一种实现对循环任务进行软硬件划分的装置,其特征在于,当可重构阵列当前执行数据流的节点个数大于可重构阵列的规模时,所述装置包括:
调度模块,用于对所述可重构阵列当前执行数据流的节点进行算子调度;
第一获得模块,用于根据所述调度模块的调度结果,获得输入节点的自由度;
第二获得模块,用于获得输入节点的输出个数;
获取模块,用于根据所述第一获得模块获得的输入节点的自由度、所述第二获得模块获得的输入节点的输出个数,获取自由度最高且输出最少的输入节点;
划分模块,用于将所述获取模块获取的输入节点划分到主处理器。
7.如权利要求6所述的装置,其特征在于,所述装置还包括:处理模块;所述处理模块用于更新所述主处理器和所述可重构阵列,直到所述可重构阵列当前执行数据流的节点小于所述可重构阵列的规模为止。
8.如权利要求6所述的装置,其特征在于,所述调度模块具体包括:
第一调度单元,用于对所述当前执行数据流的节点进行第一算子调度;
第二调度单元,用于对所述当前执行数据流的节点进行第二算子调度;
相应地,所述第一获得模块具体用于:根据所述第二调度单元获得的调度中的节点所在的时钟周期和所述第一调度单元获得的调度中的节点所在的时钟周期,获得输入节点的自由度。
9.如权利要求6所述的装置,其特征在于,当所述获取模块获取的输入节点为多个时;
所述划分模块具体用于将所述获取模块获取的输入节点中编号最小的一个输入节点划分到主处理器。
CN200910090401XA 2009-07-31 2009-07-31 一种实现对循环任务进行软硬件划分的方法和装置 Expired - Fee Related CN101630274B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910090401XA CN101630274B (zh) 2009-07-31 2009-07-31 一种实现对循环任务进行软硬件划分的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910090401XA CN101630274B (zh) 2009-07-31 2009-07-31 一种实现对循环任务进行软硬件划分的方法和装置

Publications (2)

Publication Number Publication Date
CN101630274A CN101630274A (zh) 2010-01-20
CN101630274B true CN101630274B (zh) 2012-06-20

Family

ID=41575392

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910090401XA Expired - Fee Related CN101630274B (zh) 2009-07-31 2009-07-31 一种实现对循环任务进行软硬件划分的方法和装置

Country Status (1)

Country Link
CN (1) CN101630274B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901161A (zh) * 2010-07-21 2010-12-01 四川大学 一种面向能耗相关软/硬件划分的层次化控制数据流图建模方法
CN102868532B (zh) * 2012-09-12 2015-05-20 清华大学 基于可重构技术的加解密算法中基本算子的提取方法
CN103116493B (zh) * 2013-01-21 2016-01-06 东南大学 一种应用于粗粒度可重构阵列的自动映射方法
CN103164275B (zh) * 2013-03-05 2016-08-03 天津大学 在调度问题中降低最大数据存储的方法
CN105487873B (zh) * 2015-12-04 2019-01-01 西安电子科技大学 一种保证质量的快速软硬件划分方法
CN108399105B (zh) * 2018-02-27 2021-05-04 天津大学 一种基于改进头脑风暴算法的软硬件划分方法
CN109144702B (zh) * 2018-09-06 2021-12-07 兰州大学 一种用于行列并行粗粒度可重构阵列多目标优化自动映射调度方法
CN110058932B (zh) * 2019-04-19 2021-08-27 中国科学院深圳先进技术研究院 一种用于数据流驱动计算的存储方法和存储系统
CN111090613B (zh) * 2019-11-25 2022-03-15 中国人民解放军国防科技大学 一种基于图分割的低复杂度软硬件划分与调度方法
CN113961333B (zh) * 2021-12-22 2022-03-11 北京燧原智能科技有限公司 循环任务的生成、执行方法、装置、ai芯片及存储介质

Also Published As

Publication number Publication date
CN101630274A (zh) 2010-01-20

Similar Documents

Publication Publication Date Title
CN101630274B (zh) 一种实现对循环任务进行软硬件划分的方法和装置
CN101630275B (zh) 一种实现生成循环任务配置信息的方法和装置
US7200837B2 (en) System, method and software for static and dynamic programming and configuration of an adaptive computing architecture
US7577799B1 (en) Asynchronous, independent and multiple process shared memory system in an adaptive computing architecture
US7353516B2 (en) Data flow control for adaptive integrated circuitry
CN109992306A (zh) 用于可配置空间加速器存储器一致性的装置、方法和系统
CN109597646A (zh) 具有可配置空间加速器的处理器、方法和系统
CN104965761B (zh) 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法
CN108268278A (zh) 具有可配置空间加速器的处理器、方法和系统
CN107704922A (zh) 人工神经网络处理装置
CN107679621A (zh) 人工神经网络处理装置
US20050038984A1 (en) Internal synchronization control for adaptive integrated circuitry
CN103931148A (zh) 流量调度设备
CN103226463A (zh) 用于使用预解码数据调度指令的方法和装置
CN101833439B (zh) 基于分合思想的并行计算硬件结构
CN103034758B (zh) 集成电路逻辑优化并行处理方法
CN107491416A (zh) 适用于任意维数卷积需求的可重构计算结构及计算调度方法和装置
CN111142938A (zh) 一种异构芯片的任务处理方法、任务处理装置及电子设备
Shafique et al. Minority-game-based resource allocation for run-time reconfigurable multi-core processors
US20190121678A1 (en) Parallel computing
Das et al. A framework for post-silicon realization of arbitrary instruction extensions on reconfigurable data-paths
Ahmed et al. mRTS: Run-time system for reconfigurable processors with multi-grained instruction-set extensions
CN111090613B (zh) 一种基于图分割的低复杂度软硬件划分与调度方法
CN101699392B (zh) 流处理器中io单元复用方法
Nagpal et al. Integrated temporal and spatial scheduling for extended operand clustered VLIW processors

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
ASS Succession or assignment of patent right

Owner name: WUXI APPLICATION TECHNOLOGY RESEARCH INSTITUTE OF

Free format text: FORMER OWNER: TSINGHUA UNIVERSITY

Effective date: 20150420

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100084 HAIDIAN, BEIJING TO: 214072 WUXI, JIANGSU PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20150420

Address after: 214072, A3 building, No. 777 West Building Road, Binhu District, Jiangsu, Wuxi 4, China

Patentee after: Wuxi Research Institute of Applied Technologies Tsinghua University

Address before: 100084 Haidian District Tsinghua Yuan Beijing No. 1

Patentee before: Tsinghua University

ASS Succession or assignment of patent right

Owner name: SHENZHEN PANGO MICROSYSTEMS CO., LTD.

Free format text: FORMER OWNER: WUXI APPLICATION TECHNOLOGY RESEARCH INSTITUTE OF TSINGHUA UNIVERSITY

Effective date: 20150625

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150625

Address after: 518057 Guangdong city of Shenzhen province Nanshan District high tech Industrial Park Road eight South South technology Howare Technology Building 16

Patentee after: Shenzhen Tongchuang Guoxin Electronics Co.,Ltd.

Address before: 214072, A3 building, No. 777 West Building Road, Binhu District, Jiangsu, Wuxi 4, China

Patentee before: Wuxi Research Institute of Applied Technologies Tsinghua University

C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: 518057 Guangdong city of Shenzhen province Nanshan District high tech Industrial Park Road eight South South technology Howare Technology Building 16

Patentee after: SHENZHEN PANGO MICROSYSTEMS Co.,Ltd.

Address before: 518057 Guangdong city of Shenzhen province Nanshan District high tech Industrial Park Road eight South South technology Howare Technology Building 16

Patentee before: Shenzhen Tongchuang Guoxin Electronics Co.,Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120620

Termination date: 20210731

CF01 Termination of patent right due to non-payment of annual fee