当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于将非串并行控制流图转换为数据流的方法和设备技术

技术编号:21476809 阅读:27 留言:0更新日期:2019-06-29 04:36
本申请提供了用于将非串并行控制流图转换为数据流的方法和设备。用于将非串并行控制流图转换为数据流的方法和设备示例设备包括:节点分析器,该节点分析器用于检测序列化代码中的非串并行节点;以及指令生成器,该指令生成器用于:生成包括消耗操作数的、针对与检测到的非串并行节点相关联的在先节点的指令;生成用于组合针对在先节点生成的指令的结果的组合指令;并且输出组合指令和针对在先节点生成的指令,以便生成数据流代码。

【技术实现步骤摘要】
用于将非串并行控制流图转换为数据流的方法和设备
本公开总体上涉及计算系统中的编译器,并且更具体地,涉及通过将非串并行控制流图转换为数据流来提高计算系统中的编译器效率的方法和设备。
技术介绍
许多计算系统根据控制流架构来操作。在控制流架构中,程序的指令的执行由程序计数器驱动,该程序计数器逐步遍历程序的指令。换句话说,程序的指令的执行顺序由程序本身的结构限定。在一些情况下,当试图实现并行处理时,控制流架构可能不恰当地操作。例如,即使指令的输入(例如,操作数)尚未由并行操作指令更新,程序也可以声明要执行该指令。一些计算系统利用数据流架构。数据流架构不是由程序限定的指令执行顺序驱动的。替代地,数据流架构根据指令的输入(例如,操作数)的可用性来执行指令。例如,如果指令具有三个操作数,则一旦通过该指令所依赖的其他(多条)指令将这三个操作数提供给该指令,则利用数据流架构的计算系统将执行该指令。因此,数据流架构可以在高度并行的环境中执行,而不用担心指令将在该指令的数据依赖性被更新/满足之前执行。例如,数据流架构可以用在大规模计算系统中,该大规模计算系统使用大量处理元件使处理高度并行化。附图说明图1是用于将控制流代码转换为数据流代码的示例系统的框图。图2是图1的非串并行转换器的示例实现的框图。图3图示了串并行的示例控制流图。图4图示了包括非串并行的节点的示例控制流图。图5是表示用于实现图3和/或图4的非串并行转换器的示例机器可读指令的流程图。图6是可以执行图5的指令来实现图3和/或图4的非串并行转换器的示例处理设备的框图。附图不按比例绘制。如在本专利中所使用,记载任何部件(例如,层、膜、区域或板)以任何方式定位在(例如,定位在、位于、设置在或形成在等)另一部件上指示被引用部件与该另一部件接触,或者被引用部件在该另一部件上方并且一个或多个中间部件位于该被引用部件与该另一部件之间。记载任何部件与另一部件接触意味着这两个部件之间没有中间部件。具体实施方式串并行图广泛用于应用工程和算法研究理论。如果图是串并行图,则能在线性时间内解决一般是NP完全问题(NP-Complete)的一些图问题。已经开发了高度高效的算法来生成用于作为串并行图的控制流图的高度并行的数据流代码。如果有向图G可以通过以下操作的顺序产生,则该有向图G是两端串并行的,且具有端点s和t:1.创建新图,该新图由从s指向t的单个边组成。2.给定两个两端串并行图X和Y,具有端点sX、tX、sY和tY,通过标识s=sX=sY和t=tX=tY来形成新图G=P(X,Y)。这被称为X和Y的并行组合。3.给定两个两端串并行图X和Y,具有端点sX、tX、sY和tY,通过标识s=sX、tX=sY和t=tY来形成新图G=S(X,Y)。这被称为X和Y的串行组合。如果对于无向图的边缘的一些取向,该无向图形成具有端点s和t的有向的两端串并行图,则该无向图是具有端点s和t的两端串并行。如果对于某两个顶点s和t,有向或无向是具有这两个那些端点的两端串并行,则该有向图或无向图是串并行的。虽然数据流架构可以有利地用在计算系统中,但并非所有程序都被设计成和/或能够直接以数据流代码编写。例如,现有程序可能针对控制流架构来实现。本文公开的方法和设备促进将控制流程序转换为数据流程序。具体地,本文公开的方法和设备标识程序中的非串并行控制流(例如,图4的示例非串并行流)并将该非串并行控制流转换为数据流代码。因此,在一些公开的示例中,具有复杂控制流的传统程序可以在高度并行的数据流架构中运行。图1是示例系统100的框图,该示例系统包括由示例编译器103编译以便生成示例数据流汇编代码112的示例输入代码102。例如,系统100可以在编译器内实现,以将控制流代码转换为数据流代码。所图示示例的输入代码102是序列化指令软件程序,该序列化指令软件程序被转换并编译成汇编代码(例如,用于在计算平台上执行)。示例输入代码102以C编程语言编写。或者,输入代码可以用任何其他语言编写,诸如C++、Fortran、Java等。示例编译器103包括示例中间表示(IR)变换器304、示例序列化指令变换器106、示例控制流至数据流转换器108、以及示例非串并行转换器110。所图示示例的编译器103是LLVM编译器,该LLVM编译器已被修改为包括非串并行转换器110。或者,可以使用任何其他类型的预先存在的或新创建的编译器。所图示示例的IR变换器104将示例输入代码102变换为中间表示代码。示例IR变换器104将输入代码102变换为LLVM中间表示。或者,IR变换器104可以将输入代码102变换为由系统100中使用的编译器所识别的任何类型的中间表示(例如,标准可移植中间表示、Java字节码、公共中间表示等)。示例序列化指令变换器106将来自IR变换器104的中间表示变换为目标机器的序列化控制流机器指令。根据所图示的实例,序列化指令变换器104一次一部分地变换中间表示代码,以便促进验证和转换到数据流指令。示例控制流至数据流转换器108将控制流序列化指令转换为数据流汇编代码112。示例控制流至数据流转换器108使用众所周知的技术将串并行控制流代码转换成数据流代码。示例控制流至数据流转换器108利用两条基本数据流指令SWITCH(切换)和PICK(挑选)。PICK指令基于断言(predicate)从两个寄存器中挑选值。PICK具有以下格式:%r=PICK%r0,%r1,%r2,其中%r是LLVM中的虚拟寄存器的符号。这样的指令可以用C编程语言编写为%r=(%r0)?(%r2):(%r1);SWITCH指令基于断言将操作数发送到两个所标识的寄存器中的一个寄存器。SWITCH具有以下格式:%r1,%r2=SWITCH%r0,%r3,其中该格式基于%r0中的断言将%r3中的值发送到%r1或%r2。在C语言中,该格式类似于:if(%r0)%r2=%r3else%r1=%r3。例如,图3图示了串并行的示例控制流图300。在所图示示例中,第一节点302基于C1的值将值X赋给X11或X12。(例如,如果C1为假,则X11=X,并且如果C1为真,则X12=X。)类似地,当C2为假时,第二节点304将值X11赋给X21,并且当C2为真时,第二节点304将值X11赋给X22。当C3为假时,第三节点306将值X12赋给X31,并且当C3为真时,第三节点306将值X12赋给X32。最后,第四节点308是对X21、X22、X31和X32操作的Phi操作。Phi函数是静态单一赋值形式的伪函数。Phi函数将会将控制到达第四节点308的值(例如,X21、X22、X31或X32中的一个)赋给X4。根据示例控制流图300,第二节点304与第一节点302是串行的,并且与第三节点306是并行的。因此,因为控制流图300是串并行的,所以可以使用众所周知的技术容易地将控制流图300转换为数据流。例如,在将由图3表示的控制流代码转换为数据流代码时,示例控制流至数据流转换器将生成以下PICK树:X2=PICKC2,X21,X22;X3=PICKC3,X31,X32;以及X4=PICKC1,X2,X3。实际上,许多控制流图是串并行的,或者可以使用众所周知的技术容易地简化为串并行。本文档来自技高网...

【技术保护点】
1.一种用于将控制流代码转换为数据流代码的设备,所述设备包括:节点分析器,所述节点分析器用于检测序列化代码中的非串并行节点;以及指令生成器,所述指令生成器用于:生成包括消耗操作数的、针对与检测到的非串并行节点相关联的在先节点的指令;生成用于组合针对所述在先节点生成的指令的结果的组合指令;以及输出所述组合指令和针对所述在先节点生成的指令,以便生成数据流代码。

【技术特征摘要】
2017.12.20 US 15/849,3071.一种用于将控制流代码转换为数据流代码的设备,所述设备包括:节点分析器,所述节点分析器用于检测序列化代码中的非串并行节点;以及指令生成器,所述指令生成器用于:生成包括消耗操作数的、针对与检测到的非串并行节点相关联的在先节点的指令;生成用于组合针对所述在先节点生成的指令的结果的组合指令;以及输出所述组合指令和针对所述在先节点生成的指令,以便生成数据流代码。2.如权利要求1所述的设备,其特征在于,所述消耗操作数是忽略操作数。3.如权利要求1或2所述的设备,还包括非串并行检测器,所述非串并行检测器用于检测所述序列化代码的控制流图是非串并行流图。4.如权利要求1或2所述的设备,其特征在于,所述指令是PICK指令。5.如权利要求1所述的设备,其特征在于,所述消耗操作数是白值。6.如权利要求5所述的设备,其特征在于,所述指令生成器还用于生成用于消耗所述白值的指令。7.如权利要求1或2所述的设备,其特征在于,所述节点分析器用于通过分析控制依赖图来检测所述非串并行节点。8.如权利要求7所述的设备,其特征在于,所述节点分析器用于:当所述...

【专利技术属性】
技术研发人员:Y·张
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1