CN105045646B - 一种分簇结构的部分谓词实现及编译优化方法 - Google Patents
一种分簇结构的部分谓词实现及编译优化方法 Download PDFInfo
- Publication number
- CN105045646B CN105045646B CN201510475324.5A CN201510475324A CN105045646B CN 105045646 B CN105045646 B CN 105045646B CN 201510475324 A CN201510475324 A CN 201510475324A CN 105045646 B CN105045646 B CN 105045646B
- Authority
- CN
- China
- Prior art keywords
- predicate
- clusters
- cluster
- instruction
- cpred
- 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.)
- Active
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种分簇结构的部分谓词实现及编译优化方法,包括通过数据总线与各个片上内存进行双向通讯的计算簇X簇、Y簇、Z簇和T簇,以及通过地址总线与各个片上内存进行双向通讯的地址簇U簇、V簇和W簇,在X簇、Y簇、Z簇和T簇上分别设置谓词寄存器CPred,各个计算簇上的谓词寄存器CPred分别控制各个计算簇的谓词执行。本发明的部分谓词在分簇结构上的实现,每个计算簇都具备独立进行条件运算的能力,而且每个计算簇上的条件域并不要求全是真假,增强了条件并行执行的能力;此外,一般谓词的实现则补充了分簇结构的谓词机制,提高了分簇结构谓词机制的灵活度和通用性。
Description
技术领域
本发明涉及体系结构设计以及编译优化技术领域,尤其是一种分簇结构的部分谓词实现及编译优化方法。
背景技术
分支跳转是进行指令级开发的基本障碍,谓词执行是一种有效消除分支跳转的机制,它是将程序进行控制依赖到数据依赖的变换。分支跳转的消除可以提高程序的执行性能,从硬件体系结构上讲,分支跳转的消除可以减小分支预测失败导致的硬件开销;从编译层面讲,分支跳转的消除可以扩大调度范围,允许了多个条件路径指令的重叠并行执行,挖掘了跨越多个程序路径的指令级并行性。
分簇结构可以有效增加芯片体系结构的指令级并行度,它和集中式体系结构相对应,是雷达、无线通信、视频、图像、视频等数字信号处理领域高数据并行处理应用发展的需要。通过分簇结构提升芯片指令级处理能力的技术应用广泛,分簇已经成为芯片体系结构设计时一个重要的选择。针对分簇结构进行谓词机制的设计,是分簇结构并行性开发的必然需求。谓词执行是一种硬件体系结构技术,有多种处理器体系结构支持谓词执行,而这些处理器提供的谓词机制,又有全谓词和部分谓词之分。
全谓词也成一般谓词的主要特征是所有的指令都会提供一个额外的谓词源操作数来控制指令的最终执行效果,其主要优点是提供了最大的灵活性以及通过谓词挖掘指令级并行的最大潜能,其缺点是硬件支持代价过大。而部分谓词则只提供了一小部分指令的条件执行,对谓词执行只提供了有限的支持,尤其是无法控制访存读写操作,它的主要优点是硬件设计代价很小,可以很容易支持。
目前学术界和工业界尚未针对分簇结构的谓词及编译支持方法进行***地研究。
发明内容
本发明的目的在于提供一种针对分簇结构的谓词高效实现,大幅提升了条件语句的并行执行潜力,能够更有效地提高含有条件控制的循环的执行效率的分簇结构的部分谓词实现及编译优化方法。
为实现上述目的,本发明采用了以下技术方案:一种分簇结构的部分谓词实现及编译优化方法,包括通过数据总线与各个片上内存进行双向通讯的计算簇X簇、Y簇、Z簇和T簇,以及通过地址总线与各个片上内存进行双向通讯的地址簇U簇、V簇和W簇,在X簇、Y簇、Z簇和T簇上分别设置谓词寄存器CPred,各个计算簇上的谓词寄存器CPred分别控制各个计算簇的谓词执行;
在编译时,其步骤如下:
(1)在编译器优化后端,针对含有条件控制的循环产生的中间代码,进行基本块选择过程;
(2)检测循环体是否含有条件控制的写访存,若判断结果为否,则进入第三步,否则,继续判断能否通过程序变换消除条件控制的写访存,若能消除,则进入第三步,否则,进入第四步;
(3)进行循环展开并构建超块,进行部分谓词的if转换和代码生成,最终产生分簇结构部分谓词的高效汇编代码;
(4)构建超块,进行一般谓词的if转换和代码生成,最终产生分簇结构一般谓词的汇编代码。
所述部分谓词的if转换包括如下步骤:
(1)给基本块分配部分谓词,四个计算簇上的谓词寄存器CPred的掩码位Mask对应的数值等于C时,则正常执行指令行,否则指令行的指令作废;
(2)把分支跳转指令删除;
(3)放置部分谓词定义指令,四个计算簇上的r1cond r2为真时,赋值1给CPred[0],否则赋值0给CPred[1]。
所述一般谓词的if转换包括如下步骤:
(1)给基本块分配一般谓词,采用一般谓词形式,一般谓词寄存器U1的掩码位Mask对应的数值等于C时,则正常执行指令行,否则指令行的指令作废;
(2)把分支跳转指令删除;
(3)放置一般谓词定义指令。
由上述技术方案可知,本发明的优点如下:第一,部分谓词在分簇结构上的实现,每个计算簇都具备独立进行条件运算的能力,而且每个计算簇上的条件域并不要求全是真假,大幅提升了条件语句的并行执行潜力,能够更有效地提高含有条件控制的循环的执行效率;第二,一般谓词的实现则补充了分簇结构的谓词机制,提高了分簇结构谓词机制的灵活度和通用性。
附图说明
图1为分簇体系结构图;
图2为一般谓词的支持框架图;
图3为CPred谓词即部分谓词的编译方法流程图。
具体实施方式
如图1所示,一种分簇结构的部分谓词实现及编译优化方法,包括通过数据总线与各个片上内存进行双向通讯的计算簇X簇、Y簇、Z簇和T簇,以及通过地址总线与各个片上内存进行双向通讯的地址簇U簇、V簇和W簇,在X簇、Y簇、Z簇和T簇上分别设置谓词寄存器CPred,各个计算簇上的谓词寄存器CPred分别控制各个计算簇的谓词执行。谓词寄存器CPred共8位,每一位代表一个谓词控制寄存器。计算簇包括加法器、乘法器,移位器等众多计算资源,U簇、V簇、W簇包括地址寄存器,负责的地址的生成以及具体访存操作。考虑到分簇结构的并行分支执行能力,可以通过在X簇、Y簇、Z簇、T簇上都设置谓词寄存器CPred。
为了支持分簇结构的全谓词模型,可以在地址簇U簇、V簇、W簇上设置谓词寄存器CPred,控制对应的访存指令的谓词执行,以及X簇、Y簇、Z簇、T簇四个计算簇的谓词执行。
UVW谓词即全谓词控制的谓词执行和CPred谓词即部分谓词控制的谓词执行是不同的。CPred谓词执行具有同时执行多个分支条件的潜力,X簇、Y簇、Z簇、T簇对应的谓词控制并一定全为真或者全为假,即各个簇上的执行状态并一定一致,而UVW谓词执行时只能执行同一个条件,假如恰好可以控制X簇、Y簇、Z簇、T簇的同一指令执行时,执行状态是一致的。
UVW谓词是全谓词在分簇结构的简单扩展,它具有四个计算簇的谓词执行的能力,支持它采用的传统的谓词编译支持框架,如图2所示。CPred谓词具有强大的并行能力,它是部分谓词在分簇结构的扩展,具有强大的X簇、Y簇、Z簇、T簇四个簇上的谓词并行控制能力。然而CPred谓词的使用限制也比较苛刻:即在不含有条件控制访存写指令的前提下条件判断同构以及条件执行的指令必须同构,可以通过循环展开的方法构造来满足这个限制条件,充分利用CPred提供的条件分支并行能力。
UVW谓词形式和CPred谓词形式的谓词定义指令为分别为:
Us[k]=Um cond Un
CPred[k]=Rm cond Rn
其中k的范围为0~7。
含义:如果比较结果为真,就把1赋值为Us寄存器或者CPred的第k位。两种格式的谓词控制指令和含义如表1、表2所示:
表1UVW谓词
表2CpTed控制谓词形式
表1和表2的所示的两种谓词形式类似,但本质上有很大区别。UVW谓词形式可以控制绝大多数指令,包括访存指令,它是全谓词的实现形式。而CPred谓词寄存器CPred实际上是四个寄存器,分别位于X簇、Y簇、Z簇、T簇四个簇中,各自控制指令行上属于各自簇的指令执行,并不能控制访存指令。而位于四个簇的CPred条件判断真假有时并不一致,所以四个簇上指令的执行情况有时并不一致。所以CPred谓词是部分谓词在分簇结构的一种高效实现方式,它具有X簇、Y簇、Z簇、T簇四个簇的执行能力。
一般的谓词支持框架如图2所示,主要包括四个阶段:
第一,基本块选择:要构建hyperblock,首先应决定哪些基本块组成hyperblock。一种简单的模式是把最内层循环的所有基本块作为超块的组成部分,但有可能降低程序性能。一般采用启发式函数对基本块的执行频率、大小和指令特征进行考察,选择合适的路径组成超块。首先,排除执行频率较小的基本块,对于执行频率较大的基本块,其优化和调度的自由空间会更大些;其次,排除代码量较大的基本块,由于它们较容易引起资源缺乏而影响ILP的提高;最后,排除带有副作用指令如子过程调用、内存访问等的基本块,这些指令的存在可能会降低超块的性能。
第二,构建超块(Hyperblock),选择的基本块构建超块,需要满足:
(1)只有入口基本块存在有来自于区域外的控制流,其他基本块都不存在这样的控制流,这可以通过尾复制技术满足该条件;
(2)这些基本块不含有嵌套的内层循环,内层循环的基本块满足该条件,外层循环的基本块需要通过循环剥离(loop peeling)技术满足该条件。
第三,If转换:If转换是通过把控制依赖转换成数据依赖有选择地消除超块中条件跳转指令的过程。超块中的分支跳转指令可以分为三种类型,前向跳转、后向跳转、退出跳转,其中,前向跳转分支指令跳转到超块中除进入基本块外的其他基本块;后向跳转分支指令跳到超块的进入基本块;退出跳转分支指令跳转到超块外的基本块。这里的if转换只转换前向跳转,不转换后向跳转和退出跳转是因为转换它们额外引入无用的谓词指令,会引起性能的下降。
针对If转换过程有很多算法,比较著名的是RK算法。If转换过程一般有两个基本任务。一是给基本块分配谓词,二是放置谓词定义指令。RK算法的核心是R函数和K函数,R函数负责分配谓词,K函数负责放置谓词定义操作。RK算法可以分为几个阶段:计算基本块的后支配集合;计算基本块的控制依赖集;分解每个基本块的控制依赖集合,得到R和K;根据函数R为基本块分配谓词,根据函数R将谓词定义***到相应基本块中;删除所有前向跳转指令,把超块的指令转换为谓词指令。
第四,代码生成:针对形成的谓词中间代码进行寄存器分配、代码调度等后端阶段,形成谓词汇编代码。
一般的谓词转换过程约定的谓词形式为:
(1)谓词定义指令形式:P1P0=Rm cond Rn
含义:如果比较条件为真,P1赋值为1,P0赋值为0;如果比较条件为假,P1赋值为0,P1赋值为1;
(2)谓词控制指令形式:Rs=P1op Rm Rn
含义:如果P1的值为1,指令正常执行;如果P1的值为0,该指令作废。
这种约定与UVW谓词形式和CPred的谓词形式差别很大,这给表示这两种谓词带来挑战。
UVW谓词和CPred谓词采取的谓词模型形式为:
(1)谓词抽象模型:谓词寄存器CPred个数为16个,共32个互补谓词寄存器CPred对(P0,P1),(P2,P3),…,(P14,P15),分别对应CPred或地址谓词寄存器CPred(UVW)的0~7位;
(2)谓词中间表示:在编译后端的绝大多数过程中采取使用一般谓词节的谓词进行中间表示;
(3)优化限制:鉴于UVW谓词和CPred谓词的谓词形式,关闭关于谓词的软件流水优化;
(4)进行谓词寄存器CPred分配时,互补谓词虚拟寄存器对分配在互补物理谓词寄存器CPred对上;
(5)在汇编代码输出前,进行一般谓词形式向UVW谓词形式或者CPred谓词形式的转换阶段。
实际上CPred谓词提供的条件并行执行能力比UVW谓词强,它能够更好地利用四个簇的运算资源,虽然它不能控制访存指令。如果可以能够放宽CPred指令的适用范围,把更多类型的循环类型转换为可以使用CPred谓词机制形式,理论上,可以大幅提升程序的性能。
如图3所示,在编译时,其步骤如下:(1)在编译器优化后端,针对含有条件控制的循环产生的中间代码,进行基本块选择过程;(2)检测循环体是否含有条件控制的写访存,若判断结果为否,则进入第三步,否则,继续判断能否通过程序变换消除条件控制的写访存,若能消除,则进入第三步,否则,进入第四步;(3)进行循环展开并构建超块,进行部分谓词的if转换和代码生成,最终产生分簇结构部分谓词的高效汇编代码;(4)构建超块,进行一般谓词的if转换和代码生成,最终产生分簇结构一般谓词的汇编代码。
所述部分谓词的if转换包括如下步骤:
(1)给基本块分配部分谓词,谓词指令形式为if CPred[Mask]==C do||inst…,意义为:四个簇上的谓词寄存器CPred的掩码位Mask对应的数值等于C时,则正常执行指令行,否则指令行的指令作废;四个簇的谓词寄存器CPred的值及对应的谓词执行并不要求一致;
(2)把分支跳转指令删除;
(3)放置部分谓词定义指令,如谓词定义指令形式为:CPred[0]=r1cond r2,意义为:四个簇上的r1cond r2为真时,赋值1给CPred[0],否则赋值0给CPred[1],四个簇的谓词寄存器CPred的赋值可以不同。
所述一般谓词的if转换包括如下步骤:
(1)给基本块分配一般谓词,采用一般谓词形式,一般谓词寄存器U1的掩码位Mask对应的数值等于C时,则正常执行指令行,否则指令行的指令作废;
(2)把分支跳转指令删除;
(3)放置一般谓词定义指令。
综上所述,本发明的部分谓词在分簇结构上的实现,每个计算簇都具备独立进行条件运算的能力,而且每个计算簇上的条件域并不要求全是真假,增强了条件并行执行的能力;此外,一般谓词的实现则补充了分簇结构的谓词机制,提高了分簇结构谓词机制的灵活度和通用性。
Claims (3)
1.一种分簇结构的部分谓词实现及编译优化方法,其特征在于:包括通过数据总线与各个片上内存进行双向通讯的计算簇X簇、Y簇、Z簇和T簇,以及通过地址总线与各个片上内存进行双向通讯的地址簇U簇、V簇和W簇,在X簇、Y簇、Z簇和T簇上分别设置谓词寄存器CPred,各个计算簇上的谓词寄存器CPred分别控制各个计算簇的谓词执行;
在编译时,其步骤如下:
(1)在编译器优化后端,针对含有条件控制的循环产生的中间代码,进行基本块选择过程;
(2)检测循环体是否含有条件控制的写访存,若判断结果为否,则进入第三步,否则,继续判断能否通过程序变换消除条件控制的写访存,若能消除,则进入第三步,否则,进入第四步;
(3)进行循环展开并构建超块,进行部分谓词的if转换和代码生成,最终产生分簇结构部分谓词的高效汇编代码;
(4)构建超块,进行一般谓词的if转换和代码生成,最终产生分簇结构一般谓词的汇编代码。
2.根据权利要求1所述的分簇结构的部分谓词实现及编译优化方法,其特征在于:所述部分谓词的if转换包括如下步骤:
(1)给基本块分配部分谓词,四个计算簇上的谓词寄存器CPred的掩码位Mask对应的数值等于C时,则正常执行指令行,否则指令行的指令作废;
(2)把分支跳转指令删除;
(3)放置部分谓词定义指令,四个计算簇上的r1 cond r2为真时,赋值1给CPred[0],否则赋值0给CPred[1]。
3.根据权利要求1所述的分簇结构的部分谓词实现及编译优化方法,其特征在于:所述一般谓词的if转换包括如下步骤:
(1)给基本块分配一般谓词,采用一般谓词形式,一般谓词寄存器U1的掩码位Mask对应的数值等于C时,则正常执行指令行,否则指令行的指令作废;
(2)把分支跳转指令删除;
(3)放置一般谓词定义指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510475324.5A CN105045646B (zh) | 2015-08-06 | 2015-08-06 | 一种分簇结构的部分谓词实现及编译优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510475324.5A CN105045646B (zh) | 2015-08-06 | 2015-08-06 | 一种分簇结构的部分谓词实现及编译优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105045646A CN105045646A (zh) | 2015-11-11 |
CN105045646B true CN105045646B (zh) | 2018-04-03 |
Family
ID=54452210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510475324.5A Active CN105045646B (zh) | 2015-08-06 | 2015-08-06 | 一种分簇结构的部分谓词实现及编译优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105045646B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239260B (zh) * | 2017-05-11 | 2020-07-24 | 中国电子科技集团公司第三十八研究所 | 一种面向数字信号处理器的多谓词控制及编译优化方法 |
CN109240701B (zh) * | 2018-08-13 | 2022-06-28 | 湖南科技大学 | 一种面向谓词执行高性能dsp的指令依赖关系分析方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101382950A (zh) * | 2008-09-26 | 2009-03-11 | 中山大学 | 一种基于SWRL-Bridge-Peer模型的本体关联方法 |
CN102819569A (zh) * | 2012-07-18 | 2012-12-12 | 中国科学院软件研究所 | 一种分布交互式仿真***中的数据匹配方法 |
-
2015
- 2015-08-06 CN CN201510475324.5A patent/CN105045646B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101382950A (zh) * | 2008-09-26 | 2009-03-11 | 中山大学 | 一种基于SWRL-Bridge-Peer模型的本体关联方法 |
CN102819569A (zh) * | 2012-07-18 | 2012-12-12 | 中国科学院软件研究所 | 一种分布交互式仿真***中的数据匹配方法 |
Non-Patent Citations (2)
Title |
---|
《一种基于谓词执行优化技术的寄存器分配算法》;王凤芹,胡定磊,刘春林;<计算机研究与发展>;20060830;全文 * |
《谓词相关编译技术和深层代码优化》;芦运照;《中国博士学位论文全文数据库》;20070228;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN105045646A (zh) | 2015-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104820613B (zh) | 一种异构多核程序的编译方法 | |
CN104965761A (zh) | 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法 | |
US7747990B2 (en) | Processors and compiling methods for processors | |
CN102750131A (zh) | 一种面向gpu的双调归并排序方法 | |
CN101655783B (zh) | 前瞻多线程划分方法 | |
CN105045646B (zh) | 一种分簇结构的部分谓词实现及编译优化方法 | |
CN103559069B (zh) | 一种基于代数***的跨文件过程间优化方法 | |
Yin et al. | DFGNet: Mapping dataflow graph onto CGRA by a deep learning approach | |
CN101840329B (zh) | 一种基于图拓扑结构的数据并行处理方法 | |
CN103617049B (zh) | 基于互补谓词的代码移动方法 | |
CN112558977B (zh) | 面向异构众核后端基于代价模型的多面体优化方法 | |
Huynh et al. | Efficient custom instructions generation for system-level design | |
CN116306424A (zh) | 一种基于可调级数裕量改进的动态扩增逐层优化算法的pisa架构芯片资源排布方法 | |
Zhao et al. | Effectively Scheduling Computational Graphs of Deep Neural Networks toward Their {Domain-Specific} Accelerators | |
Aldinucci et al. | Targeting heterogeneous architectures via macro data flow | |
CN109597619A (zh) | 一种面向异构多核架构的自适应编译框架 | |
Nourani et al. | Move frame scheduling and mixed scheduling-allocation for the automated synthesis of digital systems | |
Weiss et al. | Architectural improvements for a data-driven VLSI processing array | |
Gupta et al. | Compilation techniques for a reconfigurable LIW architecture | |
Dai et al. | WideSA: A High Array Utilization Mapping Scheme for Uniform Recurrences on the Versal ACAP Architecture | |
Ismail et al. | A parallel and concurrent implementation of Lin-Kernighan heuristic (LKH-2) for solving traveling salesman problem for multi-core processors using SPC 3 programming model | |
CN110675088B (zh) | 一种数字孪生***复杂任务高效划分方法 | |
Jou et al. | PASS: A package for automatic scheduling and sharing pipelined data paths | |
Xie et al. | MBSS: A General Paradigm for Static Schedule for Nested Loops with Dynamic Loop Boundary on CGRAs | |
Jovanovic | Software pipelining of loops by pipelining strongly connected components |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20191106 Address after: 5 / F, airborne center, 38 new area, No. 199, Xiangzhang Avenue, hi tech Zone, Hefei City, Anhui Province 230000 Patentee after: Anhui core Century Technology Co., Ltd. Address before: 230088, 199, camphor Road, hi tech Zone, Anhui, Hefei Patentee before: No.38 Inst., China Electronic Sci. & Tech. Group Co. |