CN1672132A - 源到源的分区编译 - Google Patents
源到源的分区编译 Download PDFInfo
- Publication number
- CN1672132A CN1672132A CNA038174669A CN03817466A CN1672132A CN 1672132 A CN1672132 A CN 1672132A CN A038174669 A CNA038174669 A CN A038174669A CN 03817466 A CN03817466 A CN 03817466A CN 1672132 A CN1672132 A CN 1672132A
- Authority
- CN
- China
- Prior art keywords
- processor
- abstract syntax
- syntax tree
- group
- stipulations
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
- Stored Programmes (AREA)
Abstract
结合多个不同处理器的目标***,例如一个通用处理器(GP)和至少一个协同处理器(COP),或者可选地,两个或者更多协同处理器(COPA,COPB,COPC),能够把灵活性和速度结合起来用来执行一组函数。这种目标***的设计要求把规约分区成一部分由通用处理器执行,一部分由协同处理器执行,或者分区成多个部分,由不同的协同处理器执行。本发明描述了一种用于分区源代码中的规约的方法。在第一步,规约301被转换成多个抽象语法树101。在第二步中,多个抽象语法树101分区成至少第一组201和第二组203。第一组抽象语法树201待由第一处理器(GP,COPA)执行,而第二组抽象语法树203待由第二处理器(COP,COPB)执行。第一组抽象语法树201和第二组抽象语法树203都能够分别被翻译成原始源代码语言中的规约309和311,允许用户把手动修改305和307加入到规约309和311中。此外,特定的编译器工具以及特定的设计工具能够用来把规约309和311转换成例如,对应的可执行机器代码315和协同处理器319的规约。
Description
技术领域
本发明涉及一种在源代码中分区规约的方法。
本发明进一步涉及生成目标***的协同设计方法,其中目标***包括一个第一处理器和至少一个第二处理器,协同设计方法包括所述用于在源代码中分区规约的方法。
本发明进一步涉及一种分区编译器程序产品,当所述编译器程序产品在计算机中运行时,经设置用来执行所述在源代码中分区规约的方法的全部步骤。
背景技术
目标***包括两个或者多个处理器,允许结合灵活相和速度,以加快执行一组函数。这种目标***的一个例子是具有在控制处理器控制之下执行应用程序的两个或多个协同处理器的***。另一个例子是具有一个通用处理器和一个协同处理器的***,该***中,两个处理器均用于执行部分应用程序。通用处理器是软件控制的,通过采用适当的软件,通用处理器能够满足多种不同的需求,提供了很好的灵活性。然而,对于一个给定的函数,软件控制处理器执行起来,通常要比专门用于执行该函数的协同处理器要慢。协同处理器的例子,可以是固定的硬件加速器,可参数化硬件加速器,可重配置硬件,应用程序特定指令集处理器和作为加速器使用的专用可编程处理器。当采用协同处理器后,在牺牲灵活性的同时提高了操作速度。而且,协同处理器的使用提高了目标***的功率效率。协同处理器适合用于已经设计好的任务处理,但是可能不适合于该任务的修改版本。然而,在可重新配置电路中,比如现场可编程门阵列(FPGA),定义一个协同处理器能够增加硬件的灵活性。这种逻辑电路可以采用不同的方式重复配置。
对于既包括一个通用处理器又包括一个协同处理器的***,协同处理器用来执行特定的函数,例如对执行速度有要求的函数,而通用处理器能够在软件的控制下执行其余的函数。这种目标***的设计叫做所谓的硬件/软件协同设计。在设计过程中,对于一个具有期望函数的目标***,需要确定哪些函数由协同处理器执行,哪些函数由软件控制的通用处理器执行。这就叫做所谓的硬件/软件分区。在把期望的函数规约,一部分分区给软件执行,而一部分分区给协同处理器执行之后,必须实现实际的执行。编译器把由软件执行的部分转换成通用处理器执行的机器代码,例如,硬件综合工具对硬件进行配置或者生成一个连线表,如同其规约部分所定义的。
对于包括一个控制处理器和两个或多个协同处理器的其他目标***,协同处理器用来执行应用程序,而控制处理器控制目标***,例如处理操作***和用户接口。协同处理器可以专门用于有效处理特定的函数集。在设计这样的目标***时就采用了协同设计方法,用于决定哪些函数由特定的协同处理器执行。规约被分区为至少一部分由第一协同处理器执行,一部分由第二协同处理器执行。
WO00/38087描述了构成电子电路的协同设计***,包括一个协同处理器和软件控制的资源。协同设计***接收一个目标电子***的性能描述,并且自动把所要求的函数在硬件和软件之间分区。分区器从抽象语法树中产生一个控制/数据流程图。然后对尚未由用户指派给资源的描述部分进行操作。
现有的协同设计方法存在的缺点在于,一旦完成对规约的分区之后,就不可能把硬件部分和/或软件部分还原为规约的原始源代码。这将带来两个严重的缺点。第一,分区以后对于用户来说就不可能对已经分区的规约作任何手动修改。而事实上,通过手动将附加函数转移到特定的协同处理器,对于提高目标***的性能具有很大的帮助。第二,在硬件/软件协同设计的情况中,软件编译和硬件综合不得不在所获取的控制/数据流程图描述中执行,这就意味着这些步骤将不得不采用相同的、用于硬件/软件分区的工具来实现。实际上,该工具也许并不能生成最有效的机器代码和/或硬件配置。使用专门用于通用处理器的编译器以及专门用于协同处理器的设计工具和/或编译器,能够为目标***获得最优性能。在协同设计具有一个控制处理器和两个或多个用于执行应用程序的协同处理器的***时,也会遇到类似的问题。在这种情况中,用于设计协同处理器的专用工具的使用也能够对目标***作最优设计。
发明公开
本发明的一个目标是提供一种分区规约的方法,经过分区以后,允许由第一处理器执行的部分转换成源代码语言中的规约,以及允许由第二处理器执行的部分转换成源代码语言中的规约。
该目标是通过在源代码中分区规约的方法来实现的,其特点在于该方法包括以下步骤:将规约转换成多个抽象语法树,将多个语法树分区为至少第一组和第二组,抽象语法树的第一组由第一处理器执行,抽象语法树的第二组由第二处理器执行。
分区方法在多个代表源程序的抽象语法树上操作。以抽象语法树形式描述的规约可以翻译回源代码语言中的规约。因此,在分区以后,这种翻译可以用于由第一处理器执行的部分以及第二处理器执行的部分。
本发明的一个实施例的特点在于,用于分区的方法进一步包括一下步骤:把第一组抽象语法树转换成源代码中的第一部分规约,以及把第二组抽象语法树转换成源代码中的第二部分规约。该实施例的一大优点在于它极大地方便了用户把手工修改加入到第一和第二部分规约。该实施例的另一大优点在于第一处理器和第二处理器可以分别采用特定的编译器和特定设计的工具执行第一和第二部分规约。
本发明的一个实施例的特点在于,把多个抽象语法树分区成第一组抽象语法树和第二组抽象语法树的步骤包括下述步骤:根据概况数据至少提取(out-lining)一个抽象语法树。该实施例的一大优点在于,通过提供识别该关键部分的信息,允许将规约的关键部分转换成由协同处理器执行的部分。而且,通过使用作为分区编译器程序的输入数据的概况数据,能够自动进行硬件/软件分区。
本发明的一个实施例,提供一种产生目标***的协同设计方法,其中目标***包括一个第一处理器和至少一个第二处理器,协同设计方法包括依照权利要求1的分区方法。该实施例的一大优点在于,由于经分区后的规约可以转换成原始源代码语言,所以可以很容易对规约作手动修改。例如,手动转换附加函数,从第一处理器执行部分转换成第二处理器执行部分,反之亦然。而且,在设计目标***过程中,供通用处理器特别使用的编译器程序以及供协同处理器使用的设计工具和/或编译器,都能够使用。从而使目标***获得了最优性能。
本发明的一个实施例的特点在于第二处理器是一个协同处理器,并且其中第二部分规约转换成协同处理器执行的规约。本发明的一个实施例的特点在于第一处理器是一个通用处理器,并且其中第一部分规约通过编译器转换成目标代码。目标***包括一个通用处理器和一个协同处理器,结合了通用处理器的灵活性和协同处理器的高性能。
本发明的一个实施例的特点在于协同设计方法进一步包括在通用处理器和协同处理器之间定义一个接口的步骤。该实施例的一大优点在于能够在通用处理器和协同处理器之间交换信息,例如用于同步目的或者用作读和写数据的交换引用。
本发明的一个实施例的特点在于通用处理器和协同处理器之间的接口包括一个远程函数调用;该远程函数调用具有一组参数;该组参数包括一个待调用的函数的标识符,至少有一个指向待调用的函数的输入数据的引用,以及至少有一个指向待调用的函数的结果数据的引用。该实施例的一大优点在于远程函数调用能够将通用处理器和协同处理器同步,以及转移用于输入数据和结果数据的引用。
本发明的一个实施例的特点在于远程函数调用的参数组进一步包括一个存储位置的引用,该存储位值用于存储与待调用函数的返回状态值有关的信息。在待协同处理器执行的函数具有多于一个出口点的情况下,必须把确切出口点的有关信息提供给通用处理器,以便确定在软件的哪个点重新启动执行。通过使用存储位置的一个引用,而该存储位置存储由协同处理器执行的函数的返回状态的信息,通用处理器对该信息作出访问。
本发明的一个实施例的特点在于通用处理器是一个数字信号处理器。通常数字信号处理器处理应用程序,其中往往是那些在规约中相对较小的部分确定整个执行时间。采用协同处理器执行所述部分应用程序,可以提高整体的性能。
根据本发明,当所述分区编译器程序产品运行在计算机***时,该分区编译器程序产品经设置用来执行根据权利要求1的分区方法的所有步骤。该产品的一大优点在于能够自动进行分区,从而提高了效率。
附图简述
所描述的实施例的特征将参考附图作进一步的阐述:
图1图示了在对源代码段扫描以及作出解析以后获取的多个抽象语法树。
图2图示了在对图1所示的多个抽象语法树进行分区之后获取的第一和第二组抽象语法树。
图3图示了根据本发明的一种协同方法,用于产生一个目标***。
图4图示了在分区之前通过一部分规约执行语句的流程。
图5图示了分区之后执行语句的流程。
图6图示了由根据本发明的协同方法产生的第一目标***。
图7图示了由根据本发明的协同方法产生的第二目标***。
优选实施例描述
在根据本发明的分区方法的第一实施例中,用户用C作为源代码语言写了一个程序,需要对该程序进行分区,使第一部分由通用处理器执行,而第二部分由协同处理器执行。举个例子,C程序源代码的一段包括三个函数f,g和h,每个函数具有一个整型参数作为输入参数以及两条必须执行的任意语句。
f(int x)
{
s1;
s2;
}
g(int y)
{
s3;
s4;
}
h(int z)
{
s5;
s6;
}
示出的分区方法采用了上述提到的源代码段。在第一步,源代码翻译成多个抽象语法树(AST)。这些语法树通过采用树作为数据结构用抽象语法代表源代码的内部结构。AST具有多个标有生成名称的节点,以及树叶,代表语法中的终端。把源代码翻译成多个抽象语法树,能够由解析器来实现,解析器从扫描器中获得输入,并且随后构造多个抽象语法树。扫描技术和随后的源代码解析技术都是编译技术领域中所熟知的原理。所产生的源代码的多个抽象语法树101包括图1所示出的函数f,g和h。在图1中,所图示的三个抽象语法树具有节点FD1,FD2和FD3,分别指源代码段的函数f,g和h。缩写FD指函数定义,FH为函数头,FB为函数体以及PL为参数列表。这些缩写后跟随一个引用数字。参考列表PL1,PL2和PL3不作进一步的说明。
在第二步中,多个抽象语法树101分区为第一和第二组。第一组抽象语法树由通用处理器执行,而第二组抽象语法树由协同处理器来执行。由协同处理器执行的抽象语法树经选择转移到第二组抽象语法树。所选择的抽象语法树可以对应于包括函数f,g和h的源代码段中的特定的函数或语句。把来自多个抽象语法树101的特定的语法树转移到第二组抽象语法树的过程称作为提取。当提取一个抽象语法树时,要么对应于一个语句,或者对应于一个被其他函数调用的函数,该语法树被第一组中的一个新的、对应于某个函数的语法树所替换,而该函数要么调用所转移的语句,或者调用函数。如果所转移的语句或函数具有变量,这些变量作为参数传递给所转移的语句或函数。
参考图1,对应于源代码段中的函数h、具有节点FD3及其分支的抽象语法树,被选择并将其转移到第二组抽象语法树。而且,对应于源代码段的函数g中的语句s4的只具有树叶s4的抽象语法树,被选择将其转移到第二组抽象语法树。语句s4使用变量y,没有图示在源代码段中。通过提取和替换抽象语法树,多个语法树101被分区为第一组抽象语法树201和第二组抽象语法树203。
参考图2,图示了分区多个抽象语法树101后获取的第一组抽象语法树201和第二组抽象语法树203。多个抽象语法树101的抽象语法树s4的提取是通过在第二组抽象语法树203中创建一个函数来实现的,对应于具有节点FD7及其分支的抽象语法树。在多个抽象语法树101中提取抽象语法树s4之后,以第二组抽象语法树203中的抽象语法树节点FD7出现的函数k的函数调用替换抽象语法树s4。变量y作为参数传递给在第二组抽象语法树203中创建的新的函数k。第一组抽象语法树201包括具有节点FD4及其分支的抽象语法树,对应于源代码段中的函数。第一组抽象语法树201进一步包括具有节点FD5的抽象语法树,并且抽象数k在其分支的其中之一中。第二组抽象语法树203包括具有节点FD6及其分支的抽象语法树,对应于源代码段中的函数。第二组抽象语法树203进一步包括具有节点FD7及其分支的抽象语法树,对应于源代码段中的g函数的语句s4。
需要转移到第二组抽象语法树203的抽象语法树,可以通过手动标记源代码段中的对应的函数或语句来加以选择。用户必须对需要转移到协同处理器的函数作出选择。该信息在源代码段转换成多个抽象语法树时,被加入到多个抽象语法树中101,并且随后该信息用于分区。第一组抽象语法树201和第二组抽象语法树203,可以翻译回源代码语言中的规约。所有必要的源代码内部信息仍然保持在抽象语法树中,从而使翻译得以实现。
在某些实施例中,规约被分区为两组以上抽象语法树,例如三组抽象语法树。第一组由通用处理器执行,而第二第三组分别由第一和第二协同处理器执行。该实施例的一大优点在于允许定义多个协同处理器,每个处理器专门用于执行规约中的特定部分。
而在另一个实施例中,规约被分区为至少两组抽象语法树。每个组都由协同处理器执行。结果,可以定义一组协同处理器来有效执行应用程序。
在一个有利的实施例中,第一组抽象语法树201转换成源代码语言中的第一部分规约,而第二组抽象语法树203转换成源代码语言中的第二部分规约。在转换第一组抽象语法树201的过程中,获得了下列第一部分规约:
f(int x)
{
s1;
s2;
}
g(int y)
{
s3;
k(y);
}
在转换第二组抽象语法树203的过程中,获得了下列第二部分规约:
h(int z)
{
s5;
s6;
}
k(int y)
{
s4;
}
用户可以把手动修改加入到第一和第二部分规约。分别在通用处理器和协同处理器中进行的第一和第二部分规约的执行,可以通过特定的编译器和特定的设计工具和/或编译器来实现。
在另一个实施例中,把多个抽象语法树101分区成第一组抽象语法树201和第二组抽象语法树203的步骤,包括根据概况数据提取至少一个抽象语法树。规约的关键部分是由协同处理器执行是很明显的。通过运行由采用典型输入数据的规约所定义的应用程序,可以获得概况数据。有关概况数据的类型,尤其取决于协同处理器的特性。例如,如果协同处理器能够快速执行并行操作,则概况数据把重点放在操作执行的次数以及所占的并行性的数量。概况数据用来选择规约中关键部分的操作,以便使对应的抽象语法树能够转移到第二组抽象语法树203。其结果是,协同处理器将执行规约的关键部分。而且,概况数据的使用允许把规约自动分区成第一和第二部分规约。
参考图3,示意性地图示了一种用于产生目标***的协同设计方法。该目标***包括一个通用处理器和一个协同处理器。在第一步303,源代码语言C301中的规约被分区成待通用处理器执行的第一部分C语言规约309以及待协同处理器执行的第二部分C语言规约311,步骤303包括根据先前描述的实施例分区源代码中的规约的分区方法,该实施例中:
—通过扫描器和解析器把源代码语言C301中的规约转换成多个抽象语法树。
—采用概况数据把多个抽象语法树分区成第一组和第二组抽象语法树,该概况数据用于识别须由协同处理器执行的关键部分操作。
—把第一组抽象语法树翻译成使用C语言的第一部分规约309,以及把第二组抽象语法树翻译成使用C语言的第二部分规约311。
在下一个步骤中,用户可以把手动修改305和307分别加入到第一部分规约309和第二部分规约311。例如,如果需要,函数可以从第一部分规约转移动第二部分规约。这些规约以初始源代码的形式这一事实,极大地方便了用户对规约作手动修改。
在后续步骤313,采用特定的用于通用处理器的编译器,把使用C语言的第一部分规约309转换成可执行的机器代码315。在步骤317,该步骤可以与步骤313并行执行,采用特定的设计工具和/或编译器,把第二部分规约311转换成协同处理器319的规约。在某些实施例中,协同处理器的规约是硬件规约,例如连线表的形式,用于设计特定用途集成电路(AISC)。在其他实施例中,协同处理器规约是一个硬件设计和一个可配置处理器的配置规约,或者,如果使用的是已存在的可配置处理器,则仅仅是一个配置规约。在某些进一步的实施例中,协同处理器规约是一个硬件设计和一个软件规约,例如,用于可编程处理器,以微代码或者可执行机器代码形式的规约,或者,如果采用了已经存在的可编程处理器,则可以仅仅是一个软件规约。
在另一个实施例中,目标***包括一个控制处理器以及第一和第二协同处理器。规约301映射到这些协同处理器。采用特定的设计工具和/或编译器,把第一部分规约309转换成第一协同处理器规约。也采用特定的设计工具和/或编译器,把第二部分规约311转换成第二协同处理器规约。
在一个不同的实施例中,在协同设计方法的第一步303,定义一个通用处理器和协同处理器之间的接口。该接口可以在第一部分规约309和第二部分规约311分区之后进行定义。该接口可以包括用于数据读和写的存储器地址,以及包括通用处理器和协同处理器之间同步所必须的控制信息的读和写的存储器地址。
在一个有利实施例中,通用处理器和协同处理器之间的接口包括一个远程函数调用。通过远程函数调用,通用处理器调用一个由协同处理器执行的函数,并且在协同处理器完成执行特定的函数的同时,重新执行。可选地,通用处理器在此期间可以转向不同的任务。通过使用远程函数调用,通用处理器和协同处理器之间的同步是隐式存在的。当实施远程函数调用时,待协同处理器执行的函数的一个标识符作为参数传递。此外,用于获取输入数据的存储器地址以及用于写特定函数的结果数据的存储器地址,作为远程函数调用的参数传递。协同处理器能够从***存储器读出输入数据,以及把输出数据写入***存储器。
在某些实施例中,用于保存有关协同处理器执行的函数的返回状态的存储器索引也作为远程函数调用的参数传递。在特定函数具有多于一个出口点,并且在函数执行之后控制返回到通用处理器的情况中,通用处理器访问有关必须从软件中哪个点恢复执行的信息。通过该存储器索引,通用处理器能够检索特定函数的返回状态。
在某些实施例中,在协同设计方法的第一步303,转移到第二组抽象语法树的函数,在第一组抽象语法树中得到复制。参考图4,示意性地图示了通过一部分规约的函数调用的流程。在一个执行点,向语句S1作出函数调用FC,该语句包含一个if then-else结构。语句S1可以后随语句S4和语句S2,具体取决于if then-else结构的监护的评价结果。执行语句S4之后执行语句S2。语句S2执行之后,执行语句S3。随后,语句S3返回控制。临界路径CP包括语句S1,S2和S3,这些语句的形式对应于转移到第二组抽象语法树的抽象语法树。在第一组抽象语法树中,语句S1所对应的抽象语法树,由一个新的抽象语法树所替换来对所概述的语句S1,S2和S3作函数调用。在执行期间,语句S1,S2和S3由协同处理器执行。然而,偶偶地,语句S1可被语句S4跟随,这种情况中,控制返回到通用处理器。为了减少由通用处理器和协同处理器之间的函数调用所引起的开销,语句S2和S3通过添加其对应的抽象语法树复制在第一组抽象语法树中。所导致的语句执行流程图示在图5中。参考该图,所复制的语句分别示作为语句S2’和S3’。协同处理器执行由501所指的语句,而通用处理器执行503所指的语句。语句S3和语句S3’在完成执行以后都具有相同的返回点。在语句S2’和S3’偶然由通用处理器执行的情况下,性能损失可以被由减少总体开销所带来的性能的提高所超越。
参考图6,图示了一个目标***601,其设计采用了根据本发明的实施例的协同设计方法。目标***包括一个***存储器SM,一个通用处理器GP,一个协同处理器COP和一个***总线SB。***存储器SM,通用处理器GP和协同处理器COP经由***总线SB耦合。在一个可选实施例中,协同处理器COP和***存储器SM直接耦合。在另一个实施例中,通用处理器GP和协同处理器COP直接耦合。***存储器SM包括多个寄存器603。通用处理器GP包括一个寄存器堆605。协同处理器COP包括一个寄存器堆607,一个配置存储器CM,一个控制逻辑CL和一个程序计数器PC。在分区规约之后,在协同处理器中实现多个函数。协同处理器COP由配置存储器CM配置,以实施这些函数。该实施例中由协同处理器COP实现的函数是一个向量加:
C[i]=A[i]+B[i]
其中A,B和C为所涉及的三个向量,i代表一个数组索引。
在该实施例中,协同处理器是一个可配置处理器,例如一个现场可编程门阵列(FPGA)。在其他实施例中,协同处理器是一个可编程处理器,例如超长指令字(VLIW)处理器或者特定用途集成处理器(ASIP),或者协同处理器包括一个特定用途集成电路(ASIC)。
通用处理器GP启动执行应用程序。在通用处理器GP想把控制转向协同处理器COP时,进行远程函数调用。例如,需要执行向量加法程序的情况中。在远程函数调用过程中,下列参数传递给协同处理器:
func_id:协同处理器COP中向量加法函数的标识符。
&A,&B,&C,:涉及计算的三个向量的***存储器SM中的地址。
&ret_stat:变量在***存储器SM中的地址,该变量用于保存协同处理器COP执行的函数的返回状态。
在远程函数调用之前,所有参数都保存在通用处理器GP的寄存器堆605中。在远程函数调用过程中,这些参数被传递给协同处理器COP。在该实施例中,这些参数经由通用处理器GP和协同处理器COP的一个端口的直接连接,写入到寄存器堆607,该连接没有在图6中示出。在某些实施例中,协同处理器COP能够从存储器、预定义虚拟寄存器堆读取这些参数。在其他实施例中,通用处理器GP能够经由存储器匹配的IO把这些参数直接写入到寄存器堆607。
保存在协同处理器COP的寄存器堆607的参数func_id,由控制逻辑CL读出并且被翻译成一个程序计数器PC,该计数器指向配置存储器CM中的向量加法程序的第一次配置。在向量加法并不适合单个配置的情况中,大规模计算可能要求在运行期间改变多次配置。在这种情况中,程序计数器PC将指向配置组中的第一配置。
协同处理器COP经由***总线SB访问独立于通用处理器GP的***存储器SM。向量A和B的值从***存储器SM的多个寄存器堆603中对应的寄存器中读出。向量加法程序由协同处理器COP采用向量A和B的值执行。在执行之后,所计算的值C由协同处理器COP,通过***总线SB写入到寄存器堆603中对应的寄存器。变量ret_stat的值也由协同处理器COP使用保存在寄存器堆607中的变量ret_stat的地址,通过***总线SB写入到寄存器堆603中对应的寄存器。提供了同步装置,没有图示在图6中,其目的是协同处理器COP能够向通用处理器GP发送信号通知其任务已经完成,例如通过中断。随后,通用处理器GP能够经由***总线SB,从***存储器SM的多个寄存器堆603中对应的寄存器中读出参数ret_stat的值。利用ret_stat的值,通用处理器GP能够确定接下来从哪个点持续其执行,并实际恢复应用程序或任务的执行。
参考图7,图示了通过根据本发明的实施例的协同设计方法设计的目标***701。该目标***包括一个***存储器SM,一个控制器CTR,协同处理器COPA,COPB和COPC,一条***总线SB,一个输入/输出(I/O)模块IOM,和本地存储器LM,LM1和LM2。***存储器SM,协同处理器COPA,COPB和COPC,控制器CTR和输入/输出模块IOM经由***总线SB耦合。在一个可选实施例中,目标***的不同部件之间的通信是基于先入先出缓冲器受阻之上的,经由数据驱动通信网络来安排的。协同处理器COPA与本地存储器LM耦合,协同处理器COPB与本地存储器LM1和LM2耦合。标准***控制任务,比如操作***处理,中断以及用户接口,被映射到控制处理器CTR。要求相对较高性能的应用程序,例如媒体编码/解码应用程序,如MPEG或MP3,映射到协同处理器COPA,COPB和COPC。协同处理器COPA,COPB和COPC是能够执行大量并行操作的处理器,例如超长指令字(VLIW)处理器或者超大规模处理器。这些类型的处理器包括大量发射槽,其中每个发射槽对应一个或多个函数单元。数据路径受一组控制字控制。每个控制字控制部分数据路径,而这部分路径可以包括寄存器地址和用于算术逻辑单元或其他函数单元的操作代码。通常,通过指令解码器把二进制格式的指令翻译成对应的控制字,或者通过微存储,也即直接包含控制字的存储器,每组指令产生一组新的控制字。通常,一个控制字代表一个类操作RISC,包括一个操作码,两个操作数寄存器索引和一个结果寄存器索引。操作数寄存器索引和结果寄存器索引指寄存器堆中的寄存器。在VLIW处理器的情况中,多个指令压缩到一个叫做超长指令字VLIW指令的长指令中。VLIW处理器采用多个、独立函数单元来并行执行这些多指令。处理器允许利用程序中的指令并行性,从而能够同时执行多条指令。在该实施例中,处理器COPA,COPB和COPC包括不同数量的发射槽,也即协同处理器COPA包括5个发射槽,协同处理器COPB包括15个发射槽,协同处理器COPC包括8个发射槽。这些处理器因此能够处理不同指令并行性的函数。例如,MPEG编码/解码应用程序被映射到协同处理器COPA,COPB和COPC。MPEG应用程序由多个不同的函数组成,也即,离散余弦转换(DCT)函数,量化函数和一个运动估计函数。采用根据本发明的规约分区方法在***处理器COPA,COPB和COPC之间分区MPEG应用程序。由于该函数包含固有的较大程度的指令并行性,运动估计函数被映射到协同处理器COPB。运动估计函数的执行,至少跨越连续视频中两个不同的帧,该两个帧能够分别被保存在本地存储器LM1和LM2中。DCT函数具有固有的指令并行性并且只需要较少数量的本地存储容量,因此映射到协同处理器COPC。量化函数是一个固有的顺序函数,也即,不具有指令并行性。该函数不要求最优存储在本地存储器上的检查表,从而减少了***总线事务。因此,最好,量化函数映射到协同处理器COPA中。在分区MPEG应用程序之后,映射到协同处理器的每个部分能够通过专用工具分别转换成协同处理器规约。其结果是,获得了用于处理MPEG应用程序的目标***701的最优设计。
需要注意的是,上文提到的实施例阐述而非限制了本发明,那些本领域的技术人员将能够设计出多种不同的实施例,而不背离本发明附属权利要求中的范围。在权利要求中,任何括号中的参考符号不应当被理解为是限制权利要求。字“包括”不排除存在权利要求中没有列出的其他元件和步骤。前面叙述一个元件的字“一个”,不排除多个这种元件的使用。本发明能够通过包括多个独立元件的硬件,通过适当编程的计算机来实现。在设备权利要求中,列举了多个装置,这些装置能够由一个或多个相同的硬件的体现。在多个不同的互相关联的权利中叙述的特定的措施这样一个事实,并不表明这些措施不能结合起来使用以提供有点。
Claims (19)
1.一种用于在源代码(301)中划分分区规范规约的方法;
其特点在于该方法包括一下步骤:
把规范规约转换成多个抽象语法树(101);
把多个抽象语法树(101)划分分区成至少一个第一组(201)和一个第二组(203),第一组抽象语法树(201)由第一处理器(GP,COPA)执行,而第二组抽象语法树(203)由第二处理器(COP,COPB)。
2.根据权利要求1的用于在源代码中划分分区规范规约的方法,其中第二处理器是一个协同处理器。
3.根据权利要求2的用于在源代码中划分分区规范规约的方法,其中第一处理器是一个通用处理器。
4.根据权利要求1的用于在源代码中划分分区规范规约的方法进一步包括以下步骤:
把第一组抽象语法树(201)转换成源代码(309)中的第一部分规范规约,以及把第二组抽象语法树(203)转换成源代码(311)中的第二部分规范规约。
5.根据权利要求1的用于在源代码中划分分区规范规约的方法,其中把多个抽象语法树(101)划分分区成至少一个第一组抽象语法树(201)和一个第二组抽象语法树(203)的步骤包括根据概况数据提取至少一个抽象语法树的步骤。
6.根据权利要求1的用于在源代码中划分分区规范规约的方法,其中把多个抽象语法树(101)划分分区成至少一个第一组抽象语法树(201)和一个第二组抽象语法树(203)的步骤包括根据程序设计器所提供的信息提取至少一个抽象语法树的步骤。
7.一种用于产生目标***(601,701)的协同设计方法,其中目标***包括一个第一处理器(GP,COPA)和至少一个第二处理器(COP,COPB);协同设计方法博阿克包括根据权利要求1的用于在源代码中划分分区规范规约的方法。
8.一种根据权利要求7的用于产生目标***的协同设计方法,其中用于在源代码中划分分区规范规约的方法进一步包括以下步骤:把第一组抽象语法树(201)转换成在源代码(309)中的第一部分规范规约,以及把第二组抽象语法树(203)转换成源代码(311)中第二部分规范规约。
9.一种根据权利要求8的用于产生目标***的协同设计方法,其中第一二处理器是一个通用处理器以及其中,第一二部分规范规约(31109)被转换成协同***处理器(319)的规范规约。
10.一种根据权利要求9的用于产生目标***的协同设计方法,其中第一处理器是一个通用处理器以及其中,,而第一部分规范规约(309)通过编译器转换成目标代码(315)。
11.一种根据权利要求10的用于产生目标***的协同设计方法,进一步包括定义一个通用处理器(GP)和协同处理器(COP)之间的接口的步骤。
12.根据权利要求9的协同设计方法,其中协同处理器的规范规约包括一个ASIC规范规约。
13.一种根据权利要求9的协同设计方法,其中协同处理器的规范规约包括一个可编程处理器规范规约。
14.一种根据权利要求9的协同设计方法,其中协同处理器的规范规约包括一个可重新配置处理器规范规约。
15.一种根据权利要求11的协同设计方法,其中通用处理器(GP)和协同处理器(COP)之间的接口包括一个远程函数调用;
远程函数调用具有一组参数;
该组参数包括一个用于待调用的函数的标识符,至少一个指向待调用函数的输入数据的引用和至少一个指向待调用函数的结果数据的引用。
16.一种根据权利要求15的协同设计方法,其中远程调用函数的参数组进一步包括指向存储单元位置的引用,该存储位置单元用于保存待调用的函数的返回状态的信息。
17.一种根据权利要求7的协同设计方法,其中目标***(601,701)进一步包括一个***存储器(SM)和一条***总线(SB);
***存储器(SM)第一处理器和第二处理器通过***总线(SB)耦合在一起。
18.一种根据权利要求10的协同设计方法,其中通用处理器(GP)是一个数字信号处理器。
19.一种划分分区编译程序产品,其中当所述划分分区编译程序产品在计算机***中运行时,该划分分区编译程序产品经设置用来执行根据权利要求1的用于划分分区源代码种的规范规约的方法的所有步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP02078038 | 2002-07-25 | ||
EP02078038.3 | 2002-07-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1672132A true CN1672132A (zh) | 2005-09-21 |
Family
ID=30775845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA038174669A Pending CN1672132A (zh) | 2002-07-25 | 2003-06-23 | 源到源的分区编译 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7559051B2 (zh) |
EP (1) | EP1527390A2 (zh) |
JP (1) | JP2005534114A (zh) |
KR (1) | KR100958909B1 (zh) |
CN (1) | CN1672132A (zh) |
AU (1) | AU2003242950A1 (zh) |
WO (1) | WO2004012083A2 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104380260A (zh) * | 2012-05-31 | 2015-02-25 | 沙特***石油公司 | 利用可伸缩网格计算的储层仿真 |
CN104572234A (zh) * | 2014-12-29 | 2015-04-29 | 杭州华为数字技术有限公司 | 生成用于并行计算架构的源代码的方法及源到源编译器 |
WO2017101811A1 (en) * | 2015-12-15 | 2017-06-22 | Huawei Technologies Co., Ltd. | Space and time aware organization and isolation of components in real time systems |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7457671B2 (en) * | 2004-09-30 | 2008-11-25 | Rockwell Automation Technologies, Inc. | Systems and methods that facilitate management of add-on instruction generation, selection, and/or monitoring during execution |
US7478376B2 (en) * | 2004-12-02 | 2009-01-13 | International Business Machines Corporation | Computer program code size partitioning method for multiple memory multi-processing systems |
US7487496B2 (en) * | 2004-12-02 | 2009-02-03 | International Business Machines Corporation | Computer program functional partitioning method for heterogeneous multi-processing systems |
JP4867009B2 (ja) * | 2004-12-09 | 2012-02-01 | 国立大学法人 奈良先端科学技術大学院大学 | 量子コンピュータを含むコンピュータシステムのためのプログラム開発支援装置、プログラム開発支援用プログラム、及びシミュレーション装置 |
US7509244B1 (en) * | 2004-12-22 | 2009-03-24 | The Mathworks, Inc. | Distributed model compilation |
US8316059B1 (en) | 2004-12-30 | 2012-11-20 | Robert T. and Virginia T. Jenkins | Enumeration of rooted partial subtrees |
US7899821B1 (en) | 2005-04-29 | 2011-03-01 | Karl Schiffmann | Manipulation and/or analysis of hierarchical data |
WO2009058017A1 (en) | 2007-11-01 | 2009-05-07 | Silicon Hive B.V. | Application profile based asip design |
JP5143542B2 (ja) * | 2007-12-19 | 2013-02-13 | Kddi株式会社 | プロセッサデバイスに基づくソースコード変換プログラム及び装置 |
US20100037213A1 (en) * | 2008-08-07 | 2010-02-11 | Microsoft Corporation | Grammar-based generation of types and extensions |
US8352244B2 (en) * | 2009-07-21 | 2013-01-08 | International Business Machines Corporation | Active learning systems and methods for rapid porting of machine translation systems to new language pairs or new domains |
US20120096445A1 (en) * | 2010-10-18 | 2012-04-19 | Nokia Corporation | Method and apparatus for providing portability of partially accelerated signal processing applications |
US8713518B2 (en) * | 2010-11-10 | 2014-04-29 | SRC Computers, LLC | System and method for computational unification of heterogeneous implicit and explicit processing elements |
JP5978613B2 (ja) * | 2011-12-14 | 2016-08-24 | 富士ゼロックス株式会社 | ハードウエア/ソフトウエア協調設計装置及びプログラム |
US9836316B2 (en) | 2012-09-28 | 2017-12-05 | Intel Corporation | Flexible acceleration of code execution |
US9760346B2 (en) * | 2013-05-31 | 2017-09-12 | Microsoft Technology Licensing, Llc | Deeply parallel source code compilation |
GB2523205B (en) * | 2014-03-18 | 2016-03-02 | Imagination Tech Ltd | Efficient calling of functions on a processor |
KR20160003485A (ko) | 2014-07-01 | 2016-01-11 | 삼성전자주식회사 | 원격 함수 호출을 위한 자동 코드 생성 |
DE102016114914A1 (de) * | 2015-11-19 | 2017-05-24 | Dspace Digital Signal Processing And Control Engineering Gmbh | Verfahren zum Betreiben eines Steuergeräts sowie zum externen Bypassing eingerichtetes Steuergerät |
US10503509B2 (en) * | 2016-09-30 | 2019-12-10 | Intel Corporation | System and method for communication using a register management array circuit |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428793A (en) * | 1989-11-13 | 1995-06-27 | Hewlett-Packard Company | Method and apparatus for compiling computer programs with interproceduural register allocation |
US5276880A (en) * | 1989-12-15 | 1994-01-04 | Siemens Corporate Research, Inc. | Method for parsing and representing multi-versioned computer programs, for simultaneous and synchronous processing of the plural parses |
US5535342A (en) * | 1992-11-05 | 1996-07-09 | Giga Operations Corporation | Pld connector for module having configuration of either first PLD or second PLD and reconfigurable bus for communication of two different bus protocols |
US5615127A (en) * | 1994-11-30 | 1997-03-25 | International Business Machines Corporation | Parallel execution of a complex task partitioned into a plurality of entities |
EP0767544A3 (en) * | 1995-10-04 | 2002-02-27 | Interuniversitair Micro-Elektronica Centrum Vzw | Programmable modem using spread spectrum communication |
EP1065611A3 (en) * | 1995-10-23 | 2006-05-10 | Interuniversitair Microelektronica Centrum Vzw | A design environment for hardware/software co-design |
US5815717A (en) * | 1995-10-27 | 1998-09-29 | Authorgenics, Inc. | Application program and documentation generator system and method |
US5896537A (en) * | 1996-05-13 | 1999-04-20 | Siemens Corporate Research, Inc. | Partition based alias analyzer for pointers |
US5848262A (en) * | 1996-06-17 | 1998-12-08 | Hewlett-Packard Company | Simulating digital systems by using vector processing |
US6061513A (en) * | 1997-08-18 | 2000-05-09 | Scandura; Joseph M. | Automated methods for constructing language specific systems for reverse engineering source code into abstract syntax trees with attributes in a form that can more easily be displayed, understood and/or modified |
US6175957B1 (en) * | 1997-12-09 | 2001-01-16 | International Business Machines Corporation | Method of, system for, and computer program product for providing efficient utilization of memory hierarchy through code restructuring |
US6857102B1 (en) * | 1998-04-07 | 2005-02-15 | Fuji Xerox Co., Ltd. | Document re-authoring systems and methods for providing device-independent access to the world wide web |
EP0997815A3 (en) * | 1998-10-29 | 2004-05-26 | Texas Instruments Incorporated | Interactive translation system and method |
GB9828381D0 (en) * | 1998-12-22 | 1999-02-17 | Isis Innovation | Hardware/software codesign system |
US20030188300A1 (en) * | 2000-02-18 | 2003-10-02 | Patrudu Pilla G. | Parallel processing system design and architecture |
US7150011B2 (en) * | 2000-06-20 | 2006-12-12 | Interuniversitair Microelektronica Centrum (Imec) | Virtual hardware machine, methods, and devices |
US7343594B1 (en) * | 2000-08-07 | 2008-03-11 | Altera Corporation | Software-to-hardware compiler with symbol set inference analysis |
WO2002073402A1 (en) * | 2001-01-05 | 2002-09-19 | Consystant Design Technologies, Inc. | Coordination synthesis for software systems |
US7174536B1 (en) * | 2001-02-12 | 2007-02-06 | Iowa State University Research Foundation, Inc. | Integrated interactive software visualization environment |
US20030037319A1 (en) * | 2001-08-20 | 2003-02-20 | Ankur Narang | Method and apparatus for partitioning and placement for a cycle-based simulation system |
US8473922B2 (en) * | 2001-09-19 | 2013-06-25 | Hewlett-Packard Development Company, L.P. | Runtime monitoring in component-based systems |
US7062762B2 (en) * | 2001-12-12 | 2006-06-13 | Texas Instruments Incorporated | Partitioning symmetric nodes efficiently in a split register file architecture |
US20030140337A1 (en) * | 2001-12-21 | 2003-07-24 | Celoxica Ltd. | System, method, and article of manufacture for data transfer reporting for an application |
US7085918B2 (en) * | 2003-01-09 | 2006-08-01 | Cisco Systems, Inc. | Methods and apparatuses for evaluation of regular expressions of arbitrary size |
-
2003
- 2003-06-23 EP EP03771222A patent/EP1527390A2/en not_active Ceased
- 2003-06-23 AU AU2003242950A patent/AU2003242950A1/en not_active Abandoned
- 2003-06-23 KR KR1020057001103A patent/KR100958909B1/ko not_active IP Right Cessation
- 2003-06-23 CN CNA038174669A patent/CN1672132A/zh active Pending
- 2003-06-23 US US10/522,083 patent/US7559051B2/en not_active Expired - Fee Related
- 2003-06-23 WO PCT/IB2003/002908 patent/WO2004012083A2/en active Application Filing
- 2003-06-23 JP JP2004524004A patent/JP2005534114A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104380260A (zh) * | 2012-05-31 | 2015-02-25 | 沙特***石油公司 | 利用可伸缩网格计算的储层仿真 |
CN104380260B (zh) * | 2012-05-31 | 2018-12-14 | 沙特***石油公司 | 利用可伸缩网格计算的储层仿真 |
CN104572234A (zh) * | 2014-12-29 | 2015-04-29 | 杭州华为数字技术有限公司 | 生成用于并行计算架构的源代码的方法及源到源编译器 |
WO2017101811A1 (en) * | 2015-12-15 | 2017-06-22 | Huawei Technologies Co., Ltd. | Space and time aware organization and isolation of components in real time systems |
Also Published As
Publication number | Publication date |
---|---|
US7559051B2 (en) | 2009-07-07 |
WO2004012083A2 (en) | 2004-02-05 |
US20050246680A1 (en) | 2005-11-03 |
JP2005534114A (ja) | 2005-11-10 |
EP1527390A2 (en) | 2005-05-04 |
KR100958909B1 (ko) | 2010-05-19 |
AU2003242950A1 (en) | 2004-02-16 |
WO2004012083A3 (en) | 2004-12-29 |
KR20050021542A (ko) | 2005-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1672132A (zh) | 源到源的分区编译 | |
DE102018005181B4 (de) | Prozessor für einen konfigurierbaren, räumlichen beschleuniger mit leistungs-, richtigkeits- und energiereduktionsmerkmalen | |
CN109213723B (zh) | 一种用于数据流图处理的处理器、方法、设备、及一种非暂时性机器可读介质 | |
CN108268278B (zh) | 具有可配置空间加速器的处理器、方法和*** | |
Ren et al. | Optimizing data permutations for SIMD devices | |
Guo et al. | Input data reuse in compiling window operations onto reconfigurable hardware | |
DE102018006791A1 (de) | Prozessoren, Verfahren und Systeme mit einem konfigurierbaren räumlichen Beschleuniger mit einem Sequenzer-Datenflussoperator | |
Kastner et al. | Instruction generation for hybrid reconfigurable systems | |
DE102018006735A1 (de) | Prozessoren und Verfahren für konfigurierbares Clock-Gating in einem räumlichen Array | |
DE102018126150A1 (de) | Einrichtung, verfahren und systeme für multicast in einem konfigurierbaren räumlichen beschleuniger | |
TW525091B (en) | Retargetable compiling system and method | |
DE102018006889A1 (de) | Prozessoren und Verfahren für bevorzugte Auslegung in einem räumlichen Array | |
DE19815865A1 (de) | Kompiliersystem und Verfahren zum rekonfigurierbaren Rechnen | |
CN1653446A (zh) | 具有可配置执行单元的高性能混合处理器 | |
US20220100680A1 (en) | Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits | |
CN1508681A (zh) | 用于在赋值语句中查找归约变量的方法和*** | |
Javaid et al. | Optimal synthesis of latency and throughput constrained pipelined MPSoCs targeting streaming applications | |
CN1310386A (zh) | 映射电路和方法 | |
Ko et al. | Parameterized looped schedules for compact representation of execution sequences in DSP hardware and software implementation | |
Ab Rahman et al. | Design space exploration strategies for FPGA implementation of signal processing systems using CAL dataflow program | |
Gokhale et al. | Co-synthesis to a hybrid RISC/FPGA architecture | |
Stitt et al. | A code refinement methodology for performance-improved synthesis from C | |
Corporaal et al. | Cosynthesis with the MOVE framework | |
Diniz et al. | Automatic mapping of C to FPGAs with the DEFACTO compilation and synthesis system | |
She et al. | OpenCL code generation for low energy wide SIMD architectures with explicit datapath |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |