CN101630275B - 一种实现生成循环任务配置信息的方法和装置 - Google Patents

一种实现生成循环任务配置信息的方法和装置 Download PDF

Info

Publication number
CN101630275B
CN101630275B CN2009100904039A CN200910090403A CN101630275B CN 101630275 B CN101630275 B CN 101630275B CN 2009100904039 A CN2009100904039 A CN 2009100904039A CN 200910090403 A CN200910090403 A CN 200910090403A CN 101630275 B CN101630275 B CN 101630275B
Authority
CN
China
Prior art keywords
node
row
mapping
clock period
operator
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
CN2009100904039A
Other languages
English (en)
Other versions
CN101630275A (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 CN2009100904039A priority Critical patent/CN101630275B/zh
Publication of CN101630275A publication Critical patent/CN101630275A/zh
Application granted granted Critical
Publication of CN101630275B publication Critical patent/CN101630275B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明公开了一种实现生成循环任务配置信息的方法和装置,属于嵌入式系统领域。当数据流图规模不大于可重构阵列的规模时,所述方法包括:对可重构阵列当前执行数据流的节点进行算子调度;根据算子调度结果,获得关键路径的长度、各个节点的自由度,以及各个节点可处的时钟周期;根据关键路径的长度、可重构阵列的列数,建立矩阵;当数据流中存在未映射的节点时,根据未映射节点的自由度、未映射节点可处的时钟周期,以及映射规则,将未映射的节点映射到矩阵中;根据得到的映射结果,得到循环任务在可重构阵列上的配置信息。本发明提供的方案,只生成一套可重构阵列的配置信息,减少了向可重构阵列传输配置信息的时间,提高了效率。

Description

一种实现生成循环任务配置信息的方法和装置
技术领域
本发明涉及嵌入式系统领域,特别涉及一种实现生成循环任务配置信息的方法和装置。 
背景技术
芯片集成度的日益提高,使得一个芯片内可以集成大量的功能模块,形成片上系统芯片。在集成的功能模块中往往包含了处理器模块和硬件加速模块,如何让处理器与硬件加速模块能够协同工作,是片上系统芯片的软硬件协同设计需要解决的一个问题。 
其中,可重构处理器由主处理器和可重构阵列构成。如图1所示,可重构处理器的软硬件划分是指将应用程序划分为在主处理器上执行的软件部分和在可重构阵列上执行的硬件部分。通常情况下,主处理器运行应用程序的控制部分和计算量相对较小的部分,而可重构阵列运行应用中的计算量相对较大的部分。在可重构阵列上,按照节点在数据流图中的执行顺序将其映射到可重构阵列内部的可重构单元上,由映射的结果可产生可重构阵列的配置信息,该配置信息用于配置可重构单元行,实现可重构单元行的运算功能。 
发明人在实现本发明的过程中发现,现有技术至少存在以下缺点: 
在可重构阵列执行对循环任务进行软硬件划分之后,可重构阵列当前执行的数据流图的关键路径的长度大于该可重构阵列自身的行数时,现有技术会分多批的将节点映射到可重构阵列上,导致会生成了多套可重构阵列的配置信息,增加了向可重构阵列传输配置信息的时间,无法较快地实现配置可重构单元行的运算功能,降低了可重构阵列的处理效率。 
发明内容
当可重构阵列当前执行的数据流图的关键路径的长度大于可重构阵列行数的数据流图时,为了可以一次将节点映射到可重构单元上,减少向可重构阵列传输配置信息的时间,提高处理效率,满足实际应用中的需要,本发明实施例 提供了一种实现生成循环任务配置信息的方法和装置,所述技术方案如下: 
一种实现生成循环任务配置信息的方法,当数据流的规模不大于可重构阵列的规模时,所述方法包括: 
步骤C1:对所述可重构阵列当前执行数据流的节点进行算子调度; 
步骤C2:根据算子调度结果,获得关键路径的长度、各个节点的自由度,以及各个节点可处的时钟周期; 
步骤C3:根据所述关键路径的长度、所述可重构阵列的列数,建立矩阵; 
步骤C4:当所述数据流中存在未映射的节点时,根据所述未映射节点的自由度、所述未映射节点可处的时钟周期,以及映射规则,将所述未映射的节点映射到所述矩阵中; 
步骤C5:根据步骤C4得到的映射结果,得到所述循环任务在所述可重构阵列上的配置信息。 
所述步骤C1包括: 
步骤C11:对所述当前执行数据流的节点进行第一算子调度; 
步骤C12:对所述当前执行数据流的节点进行第二算子调度; 
相应地,所述步骤C2获得的各个节点的自由度具体包括: 
各个节点的自由度=“第二算子调度中该节点的时钟周期-第一算子调度中该节点的时钟周期+1”, 
其中,所述第一算子调度为“尽可能早”算子调度,所述第二算子调度为“尽可能晚”算子调度。 
所述步骤C3具体包括:以所述关键路径的长度为行、以所述可重构阵列的列数为列,建立矩阵。 
当所述数据流中存在的未映射的节点个数为多个,且自由度不同时, 
所述步骤C4根据所述未映射节点的自由度、所述未映射节点可处的时钟周期,以及映射规则,将所述未映射的节点映射到所述矩阵中具体包括: 
依次按照所述多个未映射节点的自由度由低到高的顺序,根据所述未映射节点可处的时钟周期,以及映射规则,将所述未映射的节点映射到所述矩阵。 
所述映射规则具体包括: 
在所述矩阵中,将所述节点映射到行号与所述节点的时钟周期相同的行上; 
且,在将所述节点映射到所述行时,按照从左至右的顺序进行映射; 
且,当对所述节点映射后,在所述矩阵中与所述节点映射的位置同列,且横坐标相差可重构阵列行数的整数倍的所有位置不再被其他未映射节点所映射。 
当所述节点可处在不同的时钟周期时,所述在所述矩阵中,将所述节点映射到行号与所述节点的时钟周期相同的行上,还包括: 
I、根据是否影响其他未映射节点的自由度,确定该节点所映射的行;或, 
II、根据该节点可映射的行的填满程度,确定该节点所映射的行;或, 
III、根据该节点可映射的行的行号,确定该节点所映射的行。 
所述I、II、III执行的优先级顺序为:I>II>III。 
一种生成循环任务配置信息的装置,当数据流图规模不大于可重构阵列的规模时,所述装置包括: 
调度模块,用于对所述可重构阵列当前执行数据流的节点进行算子调度; 
获得模块,用于根据所述调度模块得到的算子调度结果,获得关键路径的长度、各个节点的自由度,以及各个节点可处的时钟周期; 
建立模块,用于根据所述获得模块获得的关键路径的长度、所述可重构阵列的列数,建立矩阵; 
映射模块,用于当所述数据流中存在未映射的节点时,根据所述获得模块获得的未映射节点的自由度、所述未映射节点可处的时钟周期,以及映射规则,将所述未映射的节点映射到所述建立模块建立的矩阵中; 
生成模块,用于根据所述映射模块得到的映射结果,得到所述循环任务在所述可重构阵列上的配置信息。 
所述调度模块包括: 
第一调度单元,用于对所述当前执行数据流的节点进行第一算子调度; 
第二调度单元,用于对所述当前执行数据流的节点进行第二算子调度; 
相应地,所述获得模块在获得各个节点的自由度时,根据所述第二调度单元得到的第二算子调度中该节点的时钟周期-所述第一调度单元得到的第一算子调度中该节点的时钟周期+1,得到该节点的自由度, 
其中,所述第一算子调度为“尽可能早”算子调度,所述第二算子调度为“尽可能晚”算子调度。 
所述建立模块具体用于以所述关键路径的长度为行、以所述可重构阵列的 列数为列,建立矩阵。 
当所述数据流中存在的未映射的节点个数为多个,且自由度不同时, 
所述映射模块,具体用于依次按照所述多个未映射节点的自由度由低到高的顺序,根据所述未映射节点可处的时钟周期,以及映射规则,将所述未映射的节点映射到所述矩阵。 
所述映射规则具体包括: 
在所述矩阵中,将所述节点映射到行号与所述节点的时钟周期相同的行上; 
且,在将所述节点映射到所述行时,按照从左至右的顺序进行映射; 
且,当对所述节点映射后,在所述矩阵中与所述节点映射的位置同列,且横坐标相差可重构阵列行数的整数倍的所有位置不再被其他未映射节点所映射。 
当所述节点可处在不同的时钟周期时,所述在所述矩阵中,将所述节点映射到行号与所述节点的时钟周期相同的行上,还包括: 
I、根据是否影响其他未映射节点的自由度,确定该节点所映射的行;或, 
II、根据该节点可映射的行的填满程度,确定该节点所映射的行;或, 
III、根据该节点可映射的行的行号,确定该节点所映射的行。 
所述I、II、III执行的优先级顺序为:I>II>III。 
本发明实施例提供的技术方案的有益效果是:通过算子调度获得各个节点的自由度、时钟周期、关键路径的长度等参数,利用上述参数将未映射的节点映射到相对应的矩阵中,可以只获得一套可重构阵列上的配置信息,为此,减少了向可重构阵列传输配置信息的时间,提高了处理效率,满足了实际应用中的需要。 
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。 
图1是现有技术提供的可重构处理器的软硬件划分框图; 
图2是本发明实施例提供的算子调度的示意图; 
图3是本发明实施例提供的可重构阵列的结构图; 
图4是本发明实施例提供的一种实现生成循环任务配置信息方法的示意图; 
图5是本发明实施例提供的待划分的循环体的数据流图; 
图6是本发明实施例提供的算子调度结果的示意图; 
图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)。 
为了便于说明,本实施例将上述算子定义为节点,将上述“尽可能早”算子调度定义为第一算子调度,将上述“尽可能晚”算子调度定义为第二算子调度。 
参见图3,图3(a)为本发明实施提供的一种RCA(Reconfigurable Cell Array,可重构阵列)协处理器,其中,主要包括RC(Reconfigurable Cell,可重构单元)、临时数据模块、外部数据寄存器、路由模块4部分。 
其中,可重构单元以行为单位,实现算术运算和逻辑运算的功能,一行内的多个RC经配置后在一个时钟周期内并行的完成运算;最后一行的可重构单元的输出经路由模块选择后将作为第一行可重构单元的输入。 
其中,临时数据模块的输入来自每个RC的输出; 
临时数据模块的功能是将RC的输出延迟若干个时钟周期,并在需要的时钟周期输出给路由模块。然后,经路由模块选择后,输出给RC作为输入。其中,例如图3(b)数据流图中,节点“1”的输出将作为节点“4”的输入。先将节点“1”、“2”、“3”、“4”分别映射到RCA右起第1列的第1、2、3、4个RC。第1个时钟周期,节点“1”完成运算后,将节点“1”的运算结果输入给临时数据模块。临时数据模块将节点“1”的运算结果延迟2个时钟周期,在第4个时钟 周期输出给路由模块4,经路由模块选择后输入给第4行右起第1个RC,即节点“4”对应的RC。 
其中,路由模块将每行RC连接起来,路由模块的输入来自三个方面:外部数据寄存器、上一行RC的输出、临时数据模块; 
(1)路由模块的功能是为RC选择输入,其选择外部数据寄存器、上一行RC的输出、临时数据模块的输入输出给RC,作为RC的输入; 
(2)最后一行RC的输出经路由模块选择后可作为第一行RC的输入,这一结构使得RCA可以映射关键路径长度大于自身行数的数据流图。例如图3(b)数据流图的关键路径为5,大于RCA的行数4。将节点“1”、“2”、“3”、“4”分别映射到RCA右起第1列的第1、2、3、4个RC,将节点“5”映射到RCA第1行右起第2个RC。通过上述的结构,则节点“4”的输出可以输入给路由模块1,经路由模块选择后输入给节点“5”。这实现了关键路径长度大于RCA行数的任务图到RCA的映射。 
其中,本发明实施例具体以图3提供的可重构阵列协处理器进行说明,但对此不做限制。 
参见图4,图4是本发明实施例提供的方法的示意图,下面以一个具体实施例来说明划分算法的执行过程,具体执行过程如下: 
该方法包括: 
D1:为对可重构阵列当前执行数据流的节点进行算子调度; 
D2:为根据算子调度结果,获得关键路径的长度、各个节点的自由度,以及各个节点可处在的时钟周期; 
D3:建立以关键路径的长度为行、以可重构阵列的列数为列的矩阵; 
D4:根据未映射节点的自由度、所处的时钟周期,按照映射规则,将未映射的节点映射到矩阵中; 
D5:将映射结果生成循环任务在可重构阵列上的配置信息。 
为了对上述方法进行详细说明,详见如下,假设,RCA规模为x行y列;数据流图G1、节点个数为n(其中,n<=x×y); 
首先,对G1进行“尽可能早”算子调度(即第一算子调度);对G1进行“尽可能晚”算子调度(即第二算子调度);获得数据流图G1的关键路径的长度k和各个节点的自由度,以及各个节点可处在的时钟周期; 
其次,建立k行y列的矩阵; 
其中,k行代表RCA拟在k个时钟周期内执行完数据流图G1;矩阵的每一行对应着RCA的每一行所处的不同时钟周期,矩阵中行号相差x(其中,具体为RCA的行数)的整数倍的所有行是RCA的同一行所处的不同的时钟周期;矩阵的列与RCA的列一致,矩阵的横坐标为从左至右,纵坐标为从上至下。 
然后,当数据流图中有节点未映射时,则对上述数据流图中未映射的节点进行映射。该步骤详见如下: 
在对上述数据流图中未映射的节点进行映射时,如果这些未映射的节点为多个且自由度不同,则按照各节点的自由度,优先映射未映射的节点中自由度最低的节点。原因如下:这是因为随着越来越多的节点被映射到矩阵上,后映射的节点可选的映射范围将越来越小,只有将自由度高的节点后映射才能尽可能的保证所有的节点都被映射到矩阵上。 
当确定了需要进行映射的节点后,在进行对该节点的映射时,遵循以下映射规则: 
一、各个节点根据“尽可能早”、“尽可能晚”算子调度获得各个节点可处在的时钟周期,被映射到行号与时钟周期相同的行上。在将各个节点映射到矩阵的行上时,按照从左至右的顺序映射,先将节点映射到行上最左侧的点。 
特别需要注意的是,当一个节点可处在不同的时钟周期时,根据下述确定规则,将该节点映射到其中一个时钟周期所对应的行上。确定规则如下: 
I、根据是否影响其他未映射节点的自由度,确定该节点所映射的行。具体如下:将节点映射到矩阵的某一行上时,是以不减小其他未映射节点的自由度为前提的,因为一旦减小了其他未映射节点的自由度,这些未映射节点在向矩阵映射时,可选择的映射范围将减小,这将有可能导致这些未映射的节点不能被映射到矩阵上; 
II、根据该节点可映射的行的填满程度,确定该节点所映射的行。具体如下:优先将节点映射到被填满程度小的行上,因为这样可以尽量保持各行的填满程度一致,从而使得未被填满的行数最多。未映射的节点之后在被映射到矩阵上时,可选择的映射范围将更广,这将尽可能的保证所有的节点都能被映射到矩阵上。 
III、根据该节点可映射的行的行号,确定该节点所映射的行。具体如下: 优先将节点映射到行号小的行上。 
其中,上述优先级的关系为I>II>III,即:不减小未映射节点的自由度的优先级别大于优先将节点映射到被填满程度小的行上,优先将节点映射到被填满程度小的行上的优先级别大于优先将节点映射到行号小的行上。 
二、每当一个节点被映射到矩阵上的某一点后,矩阵中与此点同列,且横坐标相差x(其中,具体为RCA的行数)的整数倍的所有点就不能被映射,因为矩阵中行号相差x(RCA的行数)的整数倍的所有行是RCA的同一行所处的不同的时钟周期,所以当矩阵中的某一点所对应的RC被映射为数据流图上的节点后,此RC在其余的时钟周期便不能被映射。 
最后,根据循环任务的数据流图在矩阵上的映射结果,生成循环任务在可重构阵列上的配置信息。 
基于上述描述,下面以一个具体实施例来说明实现生成循环任务配置信息的过程,详见如下: 
实施例1 
本发明以图5的数据流图为例,输入为:4×4RCA;数据流图G1,节点个数16(16<=4×4),图8为本发明实施例提供的实现生成循环任务配置信息的方法的流程图,参见图8,具体步骤如下: 
步骤101:对G1进行“尽可能早”算子调度,得到调度后的数据流图。 
其中,调度后的数据流图如图6左图所示,根据“尽可能早”算子调度,以及从路径必须服从关键路径的调度关系,将节点“2”、节点“11”分配到第1个时钟周期;将节点“6”分配到第2个时钟周期;将节点“9”分配到第3个时钟周期;将节点“12”分配到第4个时钟周期;节点“14”分配到第5个时钟周期;由于节点“14”分配到第5个时钟周期,故节点“16”分配到第6个时钟周期;节点“18”分配到第8个时钟周期。 
步骤102:对G1进行“尽可能晚”算子调度,得到调度后的数据流图。 
其中,调度后的数据流图如图6右图所示,根据“尽可能晚”算子调度,以及从路径必须服从关键路径的调度关系,将节点“18”分配到第8个时钟周期;将节点“16”分配到第7个时钟周期;将节点“14”、节点“12”分配到第6个时钟周期;将节点“11”、节点“9”分配到第5个时钟周期;将节点“6”、 分配到第4个时钟周期;将节点“2”分配到第3个时钟周期。 
步骤103:根据步骤101、步骤102调度后的数据流图,得到G1的关键路径长度,各节点的自由度,及各节点可处在的时钟周期,参见表1,其中,表1为各个节点的自由度和可处在的时钟周期。 
表1各个节点的自由度和可处在的时钟周期 
Figure GSB00000729218800101
其中,根据算子自由度的计算公式为“‘尽可能晚算子调度中算子的时钟周期’-‘尽可能早算子调度中算子的时钟周期’+1”。所以,关键路径上的所有算子的自由度均为1,关键路径为(其中,关键路径为在所有的输入到输出的路径中,执行时间最长,即算子个数最多的路径)2条,分别为“1→3→7→10→13→15→17”和“1→4→7→10→13→15→17”。即,节点“1”、“3”、“4”、“7”、“10”、“13”、“15”、“17”的自由度为1,关键路径的长度为8。同理根据自由度的计算公式能分别获得节点“2”的自由度为3、节点“6”的自由度为3、节点“9”的自由度为3、节点“11”的自由度为5、节点“12”的自由度为3、节点“14”的自由度为2、节点“16”的自由度为2、节点“18”的自由度为1。 
其中,参见图6的左图、右图可以获得各个节点处在的时钟周期,参见表1,详见如下:关键路径上的节点“1”可处在的时钟周期为第1时钟周期、节点“3”可处在的时钟周期为第2时钟周期、节点“4”可处在的时钟周期为第2时钟周期、节点“7”可处在的时钟周期为第3时钟周期、节点“10”可处在的时钟周期为第4时钟周期、节点“13”可处在的时钟周期为第5时钟周期、节点“15”可处在的时钟周期为第6时钟周期、节点“17”可处在的时钟周期为第7时钟周期;从路径上的节点“2”可处在的时钟周期为第1时钟周期或第2时钟周期或第3时钟周期、节点“6”可处在的时钟周期为第2时 钟周期或第3时钟周期或第4时钟周期、节点“9”可处在的时钟周期为第3时钟周期或第4时钟周期或第5时钟周期、节点“11”可处在的时钟周期为第1时钟周期或第2时钟周期或第3时钟周期或第4时钟周期或第5时钟周期、节点“12”可处在的时钟周期为第4时钟周期或第5时钟周期或第6时钟周期、节点“14”可处在的时钟周期为第5时钟周期或第6时钟周期、节点“16”可处在的时钟周期为第6时钟周期或第7时钟周期、节点“18”可处在的时钟周期为第8时钟周期。 
步骤104:根据关键路径的长度、可重构阵列的列数,建立矩阵。 
其中,以关键路径的长度为行、以可重构阵列的列数为列,建立该矩阵,本实施例建立的矩阵具体为8行×4列。 
步骤105:当数据流图中存在节点未被映射时,根据未映射节点的自由度,所处的时钟周期,按照映射规则,将未映射节点映射到矩阵中,得到映射后的矩阵。 
其中,根据各个节点的自由度,所处的时钟周期,按照映射规则,将节点映射到矩阵中时,按照各节点的自由度的高低,优先对未映射的节点中自由度最低的节点进行映射。 
一、映射所有自由度为1的节点。 
其中,参见图7(1),所有自由度为1的节点行号均固定,按节点编号从左至右填充矩阵,每映射一个节点,要对其同列,且行号“+4”或“-4”的矩阵的点进行更新,画上“x”标明其不能再被映射。 
其中,例如将节点“1”映射到第1行第1列,则需要将矩阵的第5行第1列画上“x”,则第5行第1列不能再被映射;同理将节点“3”映射到第2行第1列,则需要将矩阵的第6行第1列画上“x”,则第6行第1列不能再被映射;同理将节点“4”映射到第2行第2列,则需要将矩阵的第6行第2列画上“x”,则第6行第2列不能再被映射;同理节点“7”映射到第3行第1列,则需要将矩阵的第7行第1列画上“x”,则第7行第1列不能再被映射;同理节点“10”映射到第4行第1列,则需要将矩阵的第8行第1列画上“x”,则第8行第1列不能再被映射;由于第5行第1列不能再被映射,即将节点“13”映射到第5行第2列,则需要将矩阵的第1行第2列画上“x”,则第1行第2列不能再被映射;由于第6行第2列不能再被映射,即将节点“15”映射到第6行第3列, 则需要将矩阵的第2行第3列画上“x”,则第2行第3列不能再被映射;由于第7行第1列不能再被映射,则需要将节点“17”映射到第7行第2列,则需要将矩阵的第3行第2列画上“x”,则第3行第2列不能再被映射;由于第8行第1列不能再被映射,则需要将节点“18”映射到第8行第2列,则需要将矩阵的第4行第2列画上“x”,则第4行第2列不能再被映射。 
二、映射所有自由度为2的节点。 
其中,参见图7(2),按节点编号先映射节点“14”。参照表1,由于节点“14”可处于第5时钟周期或第6时钟周期,即节点“14”有2个选择,可以选择矩阵的第5行和第6行。其中,由于节点“16”处于第6时钟周期或第7时钟周期,若将节点“14”映射到第6行,即节点“16”只能选择第7时钟周期,则,节点“16”的自由度减小为1(具体为,选择之前节点“16”的自由度为7-6+1=2,选择后节点“16”的自由度为7-7+1=1,2-1=1),对节点16的自由度存在减小的影响,所以节点“14”选择第5行第3列,则需要将矩阵的第1行第3列画上“x”,则第1行第3列不能再被映射;。 
其中,再映射节点“16”。节点“16”有2个选择,可以选择矩阵的第6行和第7行。其中,由于节点“16”不存在减小未映射节点自由度的问题,可将其映射到填满度较小的第7行第3列,则需要将矩阵的第3行第3列画上“x”,则第3行第3列不能再被映射。 
三、映射所有自由度为3的节点。 
其中,参见图7(3),按节点编号先映射节点“2”,参照表1,由于节点“2”可处于第1时钟周期或第2时钟周期或第3时钟周期,即节点“2”有3个选择,可以选择矩阵的第1行或第2行或第3行。由于节点“2”存在减小未映射节点自由度的问题,即若节点“2”选择第2时钟周期,则对节点“6”的自由度有影响,使得节点“6”的自由度减少1;若节点“2”选择第3时钟周期,则对节点“9”的自由度有影响,使得节点“9”的自由度减少1,综上,节点“2”选择第1行第4列,则需要将矩阵的第5行第4列画上“x”,则第5行第4列不能再被映射。 
再映射节点“6”,参照表1,由于节点“6”可处于第2时钟周期或第3时钟周期或第4时钟周期,即节点“6”有3个选择,可以选择矩阵的第2行或第3行或第4行。由于节点“6”存在减小未映射节点自由度的问题,即若节点“6” 选择第3时钟周期,则对节点“9”的自由度有影响,使得节点“9”的自由度减少1;若节点“6”选择第4时钟周期,则对节点“12”的自由度有影响,使得节点“12”的自由度减少1,综上,节点“6”选择第2行第4列,则需要将矩阵的第6行第4列画上“x”,则第6行第4列不能再被映射。 
再映射节点“9”,参照表1,由于节点“9”可处于第3时钟周期或第4时钟周期或第5时钟周期,即节点“9”有3个选择,可以选择矩阵的第3行或第4行或第5行。由于节点“9”存在减小未映射节点自由度的问题,即若节点“9”选择第4时钟周期,则对节点“12”的自由度有影响,使得节点“12”的自由度减少1,即,节点“9”选择第3行第4列,则需要将矩阵的第7行第4列画上“x”,则第7行第4列不能再被映射。 
再映射节点“12”,参照表1,由于节点“12”可处于第4时钟周期或第5时钟周期或第6时钟周期,节点“12”有3个选择,可以选择矩阵的第4行或第5行或第6行。其中,由于此时矩阵中只剩第4行和第8行未被填充满,所以节点“12”被映射到第4行第3列,则需要将矩阵的第8行第3列画上“x”,则第8行第3列不能再被映射。 
四、映射自由度为5的节点。 
其中,参见图7(4),参照表1,由于节点“11”可处于第1时钟周期或第2时钟周期或第3时钟周期或第4时钟周期或第5时钟周期,节点“11”有5个选择,可以选择矩阵的第1行或第2行或第3行或第4行或第5行。由于此时矩阵中只剩第4行和第8行未被填充满,所以节点“11”被映射到第4行第4列,则需要将矩阵的第8行第4列画上“x”,则第8行第4列不能再被映射。 
步骤106:将映射结果生成循环任务在可重构阵列上的配置信息。 
其中,参见图7(4),图7(4)为循环任务的数据流图在矩阵上的映射结果即所得到的映射后的矩阵,相应地,图7(5)为循环任务在可重构阵列上生成的配置信息。 
本发明提供的方法,通过只生成了一套可重构阵列的配置信息,减少了向可重构阵列传输配置信息的时间,提高了处理效率,减少了计算量,可以较快地配置可重构单元行的运算功能,满足了实际应用中的需要。 
实施例2 
参见图9,为本发明实施例提供的一种实现生成循环任务配置信息的装置示意图,图10为本发明实施例提供的一种实现生成循环任务配置信息的装置具体示意图,包括: 
调度模块201:用于对所述可重构阵列当前执行数据流的节点进行算子调度。 
其中,调度模块具体包括: 
第一调度单元201A,用于对当前执行数据流的节点进行第一算子调度; 
第二调度单元201B,用于对当前执行数据流的节点进行第二算子调度; 
相应地,获得模块在获得各个节点的自由度时,根据第二调度单元得到的第二算子调度中该节点的时钟周期-第一调度单元得到的第一算子调度中该节点的时钟周期+1,得到该节点的自由度。 
获得模块202:用于根据调度模块201得到的算子调度结果,获得关键路径的长度、各个节点的自由度,以及各个节点可处的时钟周期。 
建立模块203:用于根据获得模块202获得的关键路径的长度、可重构阵列的列数,建立矩阵。 
其中,建立模块203具体用于以关键路径的长度为行、以可重构阵列的列数为列,建立矩阵。 
映射模块204:用于当数据流中存在未映射的节点时,根据获得模块202获得的未映射节点的自由度、未映射节点可处的时钟周期,以及映射规则,将未映射的节点映射到建立模块203建立的矩阵中。 
其中,当数据流中存在的未映射的节点个数为多个,且自由度不同时,映射模块,具体用于依次按照多个未映射节点的自由度由低到高的顺序,根据未映射节点可处的时钟周期,以及映射规则,将未映射的节点映射到矩阵。 
其中,映射规则具体包括: 
在矩阵中,将节点映射到行号与节点的时钟周期相同的行上; 
且,在将节点映射到行时,按照从左至右的顺序进行映射; 
且,当对节点映射后,在矩阵中与节点映射的位置同列,且横坐标相差可重构阵列行数的整数倍的所有位置不再被其他未映射节点所映射。 
当节点可处在不同的时钟周期时,在矩阵中,将节点映射到行号与节点的时钟周期相同的行上,还包括: 
I、根据是否影响其他未映射节点的自由度,确定该节点所映射的行;或, 
II、根据该节点可映射的行的填满程度,确定该节点所映射的行;或, 
III、根据该节点可映射的行的行号,确定该节点所映射的行。 
其中,I、II、III执行的优先级顺序为:I>II>III。 
生成模块205:用于映射模块204得到的映射结果,得到循环任务在可重构阵列上的配置信息。 
综上,本发明实施例提出的一种实现生成循环任务配置信息的方法和装置,只生成了一套可重构阵列的配置信息,减少了向可重构阵列传输配置信息的时间,提高了处理效率,可以较快地配置可重构单元行的运算功能,满足了实际应用中的需要。 
以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。 

Claims (14)

1.一种实现生成循环任务配置信息的方法,其特征在于,当数据流的规模不大于可重构阵列的规模时,所述方法包括:
步骤C1:对所述可重构阵列当前执行数据流的节点进行算子调度;
步骤C2:根据算子调度结果,获得关键路径的长度、各个节点的自由度,以及各个节点可处的时钟周期;
步骤C3:根据所述关键路径的长度、所述可重构阵列的列数,建立矩阵;
步骤C4:当所述数据流中存在未映射的节点时,根据所述未映射节点的自由度、所述未映射节点可处的时钟周期,以及映射规则,将所述未映射的节点映射到所述矩阵中;
步骤C5:根据步骤C4得到的映射结果,得到所述循环任务在所述可重构阵列上的配置信息。
2.如权利要求1所述的方法,其特征在于,所述步骤C1包括:
步骤C11:对所述当前执行数据流的节点进行第一算子调度;
步骤C12:对所述当前执行数据流的节点进行第二算子调度;
相应地,所述步骤C2获得的各个节点的自由度具体包括:
各个节点的自由度=“第二算子调度中该节点的时钟周期-第一算子调度中该节点的时钟周期+1”,
其中,所述第一算子调度为“尽可能早”算子调度,所述第二算子调度为“尽可能晚”算子调度。
3.如权利要求1所述的方法,其特征在于,所述步骤C3具体包括:以所述关键路径的长度为行、以所述可重构阵列的列数为列,建立矩阵。
4.如权利要求3所述的方法,其特征在于,当所述数据流中存在的未映射的节点个数为多个,且自由度不同时,
所述步骤C4根据所述未映射节点的自由度、所述未映射节点可处的时钟周期,以及映射规则,将所述未映射的节点映射到所述矩阵中具体包括:
依次按照所述多个未映射节点的自由度由低到高的顺序,根据所述未映射节点可处的时钟周期,以及映射规则,将所述未映射的节点映射到所述矩阵。
5.如权利要求3或4所述的方法,其特征在于,所述映射规则具体包括:
在所述矩阵中,将所述节点映射到行号与所述节点的时钟周期相同的行上;
且,在将所述节点映射到所述行时,按照从左至右的顺序进行映射;
且,当对所述节点映射后,在所述矩阵中与所述节点映射的位置同列,且横坐标相差可重构阵列行数的整数倍的所有位置不再被其他未映射节点所映射。
6.如权利要求5所述的方法,其特征在于,当所述节点可处在不同的时钟周期时,所述在所述矩阵中,将所述节点映射到行号与所述节点的时钟周期相同的行上,还包括:
I、根据是否影响其他未映射节点的自由度,确定该节点所映射的行;或,
II、根据该节点可映射的行的填满程度,确定该节点所映射的行;或,
III、根据该节点可映射的行的行号,确定该节点所映射的行。
7.如权利要求6所述的方法,其特征在于,所述I、II、III执行的优先级顺序为:I>II>III。
8.一种生成循环任务配置信息的装置,其特征在于,当数据流图规模不大于可重构阵列的规模时,所述装置包括:
调度模块,用于对所述可重构阵列当前执行数据流的节点进行算子调度;
获得模块,用于根据所述调度模块得到的算子调度结果,获得关键路径的长度、各个节点的自由度,以及各个节点可处的时钟周期;
建立模块,用于根据所述获得模块获得的关键路径的长度、所述可重构阵列的列数,建立矩阵;
映射模块,用于当所述数据流中存在未映射的节点时,根据所述获得模块获得的未映射节点的自由度、所述未映射节点可处的时钟周期,以及映射规则,将所述未映射的节点映射到所述建立模块建立的矩阵中;
生成模块,用于根据所述映射模块得到的映射结果,得到所述循环任务在所述可重构阵列上的配置信息。
9.如权利要求8所述的装置,其特征在于,所述调度模块包括:
第一调度单元,用于对所述当前执行数据流的节点进行第一算子调度;
第二调度单元,用于对所述当前执行数据流的节点进行第二算子调度;
相应地,所述获得模块在获得各个节点的自由度时,根据所述第二调度单元得到的第二算子调度中该节点的时钟周期-所述第一调度单元得到的第一算子调度中该节点的时钟周期+1,得到该节点的自由度,
其中,所述第一算子调度为“尽可能早”算子调度,所述第二算子调度为“尽可能晚”算子调度。
10.如权利要求8所述的装置,其特征在于,所述建立模块具体用于以所述关键路径的长度为行、以所述可重构阵列的列数为列,建立矩阵。
11.如权利要求10所述的装置,其特征在于,当所述数据流中存在的未映射的节点个数为多个,且自由度不同时,
所述映射模块,具体用于依次按照所述多个未映射节点的自由度由低到高的顺序,根据所述未映射节点可处的时钟周期,以及映射规则,将所述未映射的节点映射到所述矩阵。
12.如权利要求10或11所述的装置,其特征在于,所述映射规则具体包括:
在所述矩阵中,将所述节点映射到行号与所述节点的时钟周期相同的行上;
且,在将所述节点映射到所述行时,按照从左至右的顺序进行映射;
且,当对所述节点映射后,在所述矩阵中与所述节点映射的位置同列,且横坐标相差可重构阵列行数的整数倍的所有位置不再被其他未映射节点所映射。
13.如权利要求12所述的装置,其特征在于,当所述节点可处在不同的时钟周期时,所述在所述矩阵中,将所述节点映射到行号与所述节点的时钟周期相同的行上,还包括:
I、根据是否影响其他未映射节点的自由度,确定该节点所映射的行;或,
II、根据该节点可映射的行的填满程度,确定该节点所映射的行;或,
III、根据该节点可映射的行的行号,确定该节点所映射的行。
14.如权利要求13所述的装置,其特征在于,所述I、II、III执行的优先级顺序为:I>II>III。
CN2009100904039A 2009-07-31 2009-07-31 一种实现生成循环任务配置信息的方法和装置 Expired - Fee Related CN101630275B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100904039A CN101630275B (zh) 2009-07-31 2009-07-31 一种实现生成循环任务配置信息的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100904039A CN101630275B (zh) 2009-07-31 2009-07-31 一种实现生成循环任务配置信息的方法和装置

Publications (2)

Publication Number Publication Date
CN101630275A CN101630275A (zh) 2010-01-20
CN101630275B true CN101630275B (zh) 2012-07-04

Family

ID=41575393

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100904039A Expired - Fee Related CN101630275B (zh) 2009-07-31 2009-07-31 一种实现生成循环任务配置信息的方法和装置

Country Status (1)

Country Link
CN (1) CN101630275B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102075429B (zh) * 2011-01-21 2014-12-17 北京邮电大学 一种基于就近原则的虚拟网络映射方法
CN102236632B (zh) * 2011-05-27 2013-05-22 清华大学 一种层次化描述动态可重构处理器配置信息的方法
CN102253920B (zh) * 2011-06-08 2013-03-27 清华大学 一种全互联路由结构动态可重构数据处理方法及处理器
CN102306141B (zh) * 2011-07-18 2015-04-08 清华大学 一种描述动态可重构阵列配置信息的方法
CN102546232B (zh) * 2011-11-03 2014-12-17 北京邮电大学 一种多拓扑虚拟网络映射方法
CN102567279B (zh) * 2011-12-22 2015-03-04 清华大学 一种动态可重构阵列时序配置信息的生成方法
CN103116493B (zh) * 2013-01-21 2016-01-06 东南大学 一种应用于粗粒度可重构阵列的自动映射方法
CN105630581A (zh) * 2014-11-07 2016-06-01 南京南瑞继保电气有限公司 一种任务处理方法、设备及计算机存储介质
CN104504143B (zh) 2015-01-04 2017-12-29 华为技术有限公司 一种流图优化方法及其装置
CN109274497A (zh) * 2018-08-30 2019-01-25 无锡凯特微电子有限公司 一种基于可重构阵列的sm3算法的映射方法
CN109150500A (zh) * 2018-08-30 2019-01-04 无锡凯特微电子有限公司 一种基于可重构阵列的Blowfish算法的映射方法
CN110058932B (zh) * 2019-04-19 2021-08-27 中国科学院深圳先进技术研究院 一种用于数据流驱动计算的存储方法和存储系统
WO2022126621A1 (zh) * 2020-12-18 2022-06-23 清华大学 零缓冲流水的可重构处理单元阵列及零缓冲流水方法
CN113255252B (zh) * 2021-06-03 2022-05-24 北京华大九天科技股份有限公司 一种基于矩阵的rc电路存储方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1225689C (zh) * 2003-01-09 2005-11-02 清华大学 开放式结构机器人控制器
CN1776622A (zh) * 2004-11-17 2006-05-24 雷西昂公司 高性能计算(hpc)系统中的调度式
EP2069911A1 (en) * 2006-10-05 2009-06-17 NEC Laboratories America, Inc. Inter-procedural dataflow analysis of parameterized concurrent software

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1225689C (zh) * 2003-01-09 2005-11-02 清华大学 开放式结构机器人控制器
CN1776622A (zh) * 2004-11-17 2006-05-24 雷西昂公司 高性能计算(hpc)系统中的调度式
EP2069911A1 (en) * 2006-10-05 2009-06-17 NEC Laboratories America, Inc. Inter-procedural dataflow analysis of parameterized concurrent software

Also Published As

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

Similar Documents

Publication Publication Date Title
CN101630275B (zh) 一种实现生成循环任务配置信息的方法和装置
CN101630274B (zh) 一种实现对循环任务进行软硬件划分的方法和装置
Mei et al. A hardware-software partitioning and scheduling algorithm for dynamically reconfigurable embedded systems
Ogras et al. Design and management of voltage-frequency island partitioned networks-on-chip
US20210073453A1 (en) Method and apparatus for performing parallel routing using a multi-threaded routing procedure
Liang et al. An architecture and compiler for scalable on-chip communication
Cong et al. Architecture and synthesis for on-chip multicycle communication
US8671377B2 (en) Method and apparatus for placement and routing of partial reconfiguration modules
US20070150854A1 (en) Method for specifying stateful, transaction-oriented systems for flexible mapping to structurally configurable, in-memory processing semiconductor device
US20050283743A1 (en) Method for generating hardware information
US20020124012A1 (en) Compiler for multiple processor and distributed memory architectures
JPH08508599A (ja) 再構成可能な論理システムのための仮想相互接続
CN108875956A (zh) 原生张量处理器
CN110989417B (zh) 适应fpga局部重构的周期检测系统
CN109167595A (zh) 使用部分重构在可编程电路上实施外围器件的方法和装置
Ma et al. HW/SW partitioning for region-based dynamic partial reconfigurable FPGAs
JP5798378B2 (ja) 装置、処理方法、およびプログラム
CN103034758A (zh) 集成电路逻辑优化并行处理方法
US20040001296A1 (en) Integrated circuit, system development method, and data processing method
Vipin et al. Automated partial reconfiguration design for adaptive systems with CoPR for Zynq
Sedcole et al. Run-time integration of reconfigurable video processing systems
Haubelt et al. A system-level approach to hardware reconfigurable systems
Teimouri et al. Alleviating scalability limitation of accelerator-based platforms
Attig et al. Systematic characterization of programmable packet processing pipelines
Mazumdar et al. NoC-based hardware software co-design framework for dataflow thread management

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: 20120704

Termination date: 20210731

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