簇间数据传输操作插入方法及装置的制作方法

文档序号:6423813阅读:157来源:国知局
专利名称:簇间数据传输操作插入方法及装置的制作方法
技术领域
本发明涉及处理器技术领域,尤其涉及簇间数据传输操作插入方法及装置。
背景技术
采用超长指令字(VLIW,Very Long Instruction Word)体系结构的处理器一般都具有丰富的硬件资源,这些硬件资源通常包括具有相同功能的若干个簇(cluster)。为与普通处理器将区分,以下将这种处理器称为分簇处理器。簇是分簇处理器中功能相同的多个执行单元,这些单元相互独立,可同时执行指令。如TI TMS320C6X处理器系列,它拥有两个簇,分别称为簇A(clUster Α)、簇B(clUster B),处理器每个时间点能发射8条指令。簇 A、簇B之间存在硬件数据通路,称为簇间数据通路(CrossBar) 0参见图1,LU SU MU DU L2、S2、M2和D2表示硬件功能单元。在某个时间点(Cycle)簇A或者簇B使用了簇间数据通路CrossBar进行簇间数据传输,芯片其它发射槽在该时间点仍然可以发射其它指令。 TI TMS320C6X处理器的这种无须程序员手动写可以实现数据传输操作的方式为隐式传输方式。TMS320C6X系列处理器增加了硬件形式的簇间数据通路(CrossBar),简化了软件编写和编译器优化的难度,但是也增大了硬件设计的复杂度,尤其是寄存器文件(register file)和功能单元之间连接管线也大大增加了,芯片功耗和面积也随之增大了,随之带来的是每颗芯片的硬件成本也就随之增加。为了降低硬件成本,出现了取消硬件形式的簇间数据通路,取而代之的是,当不同的簇间需要传输数据时,在需要数据传输的簇间插入一条簇间数据传输操作,该簇间数据传输操作一般通过显式传输的方式进行传输。所谓显示传输可以指程序员必须通过输入多条指令显式地操作传递数据,即发送数据的指令和接收数据的指令。常用的显式传输方式涉及的方法中有些存在诸如不属于 交集Λ、并集V非线性运算,如果要实现非线性运算, 这些非线性运算通常利用纯C代码是无法实现的,需要借助一些第三方的软件如Matlab来实现。另外有些方法只能求出局部最优解。如而贪婪算法在调度指令时候只考虑当前能够调度的若干条指令,先从程序中选出若干条指令分配到某簇中,在从剩余的程序中再选择其他若干条分配到另外簇中,看不同簇中的那些指令需要簇间传输操作,如果本来可以放到同一簇中的若干条指令被放到了不同簇中,这样,就可以对这些指令的分簇进行调整,放到同一个簇中。如此不断重复直到找到最佳的簇间指令分配方案。贪婪算法只是在局部区域内求解,得到的是次优(sub-optimal)解而非全局最优解。分簇处理器通过簇间数据传输操作来实现簇间数据的传输,执行代价较高,原因在于该指令的执行会中断所有簇的指令执行,为提高指令执行效率,需要使多个簇尽可能多的同时执行指令,又尽可能少的引入簇间数据传输操作。现有的指令分配方法或者需要通过类似Matlab的数值计算库间接实现进行非线性运算,或者只是在局部区域内求解而无法得到最佳的簇间指令分配方案,均无法最大限度地发挥分簇处理器的指令执行效率。

发明内容
本发明提供了一种簇间数据传输操作插入方法及装置,一方面可以避免非线性运算,另外一方面可以求出全局最优解,得到最佳的簇间指令分配方案,使多个簇尽可能多的同时执行指令,又尽可能少的引入簇间数据传输操作,最大限度地发挥分簇处理器的指令执行效率。本发明实施例提出的一种簇间数据传输操作插入方法,包括如下步骤输入待分配的源程序;根据预先建立的完全线性约束方程组,获得所述源程序中的指令在处理器的各个簇中采用不同分配方案时对应的执行时间,从得到的多个执行时间中找到最短的执行时间;根据所述源程序中指令之间的依赖关系以及所述最短的执行时间对应的分配方案,确定存在依赖关系的指令之间是否插入簇间数据传输操作。本发明实施例还提出一种簇间数据传输操作插入装置,包括输入模块,用于输入待分配的源程序;执行时间处理模块,用于根据预先建立的完全线性约束方程组,获得源程序中的指令在处理器的各个簇中采用不同分配方案时对应的执行时间,从得到的多个执行时间中找到最短的执行时间;指令分配模块,用于根据所述源程序中指令之间的依赖关系以及所述执行时间处理模块找到的最短的执行时间对应的分配方案,确定存在依赖关系的指令之间是否插入簇间数据传输操作。从以上技术方案可以看出,根据预先建立的完全线性约束方程组,获得源程序中的指令在处理器的各个簇中采用不同分配方案时对应的最短执行时间,根据所述最短执行时间对应的分配方案确定存在依赖关系的指令之间是否插入簇间数据传输操作。与现有技术相比,本发明方案完全依靠线性运算实现指令分配,无需引入非线性运算过程,因此无需引入第三方软件。另外,由于本发明基于源程序的所有指令的簇间指令分配方案,因此是从全局角度得到最佳的簇间指令分配方案,可以最大限度地发挥分簇处理器的指令执行效率。


图1为TI TMS320C6X处理器的结构示意图;图2为本发明簇间数据传输操作插入方法实施例一的流程图;图3为原始数据依赖图和简化后的数据依赖图的示意图;图4为本发明簇间数据传输操作插入方法实施例二的流程图;图5为本发明簇间数据传输操作插入方法实施例三的流程图;图6为第一辅助变量Ak与第二辅助变量仲的关系示意图;图7为本发明簇间数据传输操作插入装置的框图。
具体实施例方式为了表示方便,在以下的讨论中引入几个助记符,若不做特殊说明,下文中出现的相同助记符均与表1表示的含义相同。表 权利要求
1.一种簇间数据传输操作插入方法,其特征在于,包括如下步骤 输入待分配的源程序;根据预先建立的完全线性约束方程组,获得所述源程序中的指令在处理器的各个簇中采用不同分配方案时对应的执行时间,从得到的多个执行时间中找到最短的执行时间;根据所述源程序中指令之间的依赖关系以及所述最短的执行时间对应的分配方案,确定存在依赖关系的指令之间是否插入簇间数据传输操作。
2.根据权利要求1所述的方法,其特征在于,所述根据预先建立的完全线性约束方程组,获得所述源程序中的指令在处理器的各个簇中采用不同分配方案时对应的执行时间, 从得到的多个执行时间中找到最短的执行时间包括获得所述源程序的初始的估计执行时间;根据所述估计执行时间,求解预先建立的完全线性约束方程组,若所述完全线性约束方程组有解,则按照预定的步长缩短所述估计执行时间,再次求解所述完全线性约束方程组,直到所述完全线性约束方程组无解;将所述完全线性约束方程组无解时对应的估计执行时间的前一个估计执行时间作为最短的执行时间。
3.根据权利要求1或2所述的方法,其特征在于,所述根据预先建立的完全线性约束方程组,获得源程序中的指令在处理器的各个簇中采用不同分配方案时对应的执行时间之前还包括根据有依赖关系的指令在处理器的簇间分配,建立所述完全线性约束方程组。
4.根据权利要求3所述的方法,其特征在于,根据有依赖关系的指令在簇间分配,建立所述完全线性约束方程组包括定义单一指令在所述估计执行时间内在簇间被分配的存在性变量; 获得有依赖关系的一对指令被分配到簇中时对应的存在性变量; 根据所述存在性变量的加和关系,建立所述完全线性约束方程组。
5.根据权利要求4所述的方法,其特征在于,所述根据所述源程序中指令之间的依赖关系以及所述最短的执行时间对应的分配方案,确定存在依赖关系的指令之间是否插入簇间数据传输操作包括根据所述存在性变量获得一用于描述是否需要簇间数据传输操作的同一性变量; 根据所述同一性变量确定有依赖关系的指令之间是否需要簇间数据传输操作。
6.根据权利要求4所述的方法,其特征在于,所述存在性变量取值为0或1。
7.根据权利要求1所述的方法,其特征在于,所述确定存在依赖关系的指令之间是否插入簇间数据传输操作之前还包括输入用于描述所述源程序中指令之间的依赖关系的数据依赖图。
8.根据权利要求7所述的方法,其特征在于,所述输入数据依赖图包括 对数据依赖图进行简化;输入简化后的数据依赖图。
9.根据权利要求3所述的方法,其特征在于,所述完全线性约束方程组包括 用于描述具有依赖关系的两条指令在簇中存在性的第一线性约束方程组;用于描述具有依赖关系的两条指令之间存在的簇间数据传输操作的时间点的第二线性约束方程组;用于表示存在簇间数据传输操作的时间点排除其他指令执行的第三线性约束方程组。
10.根据权利要求9所述的方法,其特征在于,所述第一线性约束方程组包括
11.根据权利要求10所述的方法,其特征在于,所述第二线性约束方程组包括
12.根据权利要求11所述的方法,其特征在于,所述第三线性约束方程组包括
13.一种簇间数据传输操作插入装置,其特征在于,包括 输入模块,用于输入待分配的源程序;执行时间处理模块,根据预先建立的完全线性约束方程组,获得所述源程序中的指令在处理器的各个簇中采用不同分配方案时对应的执行时间,从得到的多个执行时间中找到最短的执行时间;指令分配模块,根据所述源程序中指令之间的依赖关系以及所述最短的执行时间对应的分配方案,确定存在依赖关系的指令之间是否插入簇间数据传输操作。
14.根据权利要求13所述的装置,其特征在于,所述执行时间处理模块包括 初始估计单元,用于获得所述源程序的初始的估计执行时间;求解单元,用于根据所述估计执行时间,求解预先建立的完全线性约束方程组; 迭代处理单元,若所述完全线性约束方程组有解,则按照预定的步长缩短所述估计执行时间,再次求解所述完全线性约束方程组,直到所述完全线性约束方程组无解;将所述完全线性约束方程组无解时对应的估计执行时间的前一个估计执行时间作为最短的执行时间。
15.根据权利要求13或14所述的,其特征在于,所述装置进一步包括线性约束模块,根据有依赖关系的指令在处理器的簇间分配,建立所述完全线性约束方程组。
16.根据权利要求15所述的装置,其特征在于,所述线性约束模块包括第一线性约束单元,建立用于描述具有依赖关系的两条指令在簇中存在性的第一线性约束方程组;第二线性约束单元,建立用于描述具有依赖关系的两条指令之间存在的簇间数据传输操作的时间点的第二线性约束方程组;第三线性约束单元,建立用于表示存在簇间数据传输操作的时间点排除其他指令执行的第三线性约束方程组。
全文摘要
本发明提供了一种簇间数据传输操作插入方法,包括如下步骤输入待分配的源程序;根据预先建立的完全线性约束方程组,获得所述源程序中的指令在处理器的各个簇中采用不同分配方案时对应的执行时间,从得到的多个执行时间中找到最短的执行时间;以及根据所述源程序中指令之间的依赖关系以及所述最短的执行时间对应的分配方案,确定存在依赖关系的指令之间是否插入簇间数据传输操作。本发明方案可以使多个簇尽可能多的同时执行指令,又尽可能少的引入簇间数据传输操作。
文档编号G06F9/38GK102270114SQ201110120058
公开日2011年12月7日 申请日期2011年5月6日 优先权日2011年5月6日
发明者苏振宇 申请人:凌阳核心科技股份有限公司, 凌阳科技股份有限公司, 北京北阳电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1