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

用于使用控制依赖图来将控制流程序转换成数据流程序的技术制造技术

技术编号:19744706 阅读:27 留言:0更新日期:2018-12-12 04:38
一种用于将控制流程序自动转换成数据流程序的装置包括非暂时性机器可读介质和存储在机器可读介质中的翻译器。翻译器当由数据处理系统执行时,使数据处理系统能够(a)自动生成控制流程序的控制依赖图、(b)至少部分地基于控制依赖图来自动生成数据流图、以及(c)至少部分地基于数据流图来自动生成数据流程序。在一个实施例或场景中,响应于确定控制流程序的变量在一个控制依赖区域中被定义并且在不同的控制依赖区域中被使用,翻译器还可以将开关指令自动插入到数据流程序中。描述并要求保护了其他的实施例。

【技术实现步骤摘要】
用于使用控制依赖图来将控制流程序转换成数据流程序的技术
概括而言,本公开内容涉及用于将计算机程序从一种架构转换成另一种架构的技术。具体而言,本公开内容涉及使用控制依赖图来将控制流程序自动转换成数据流程序的方法和装置。
技术介绍
数据处理系统(DPS)可以包括硬件和软件组件。硬件组件可以包括处理器、随机存取存储器(RAM)和非易失性存储装置(NVS)。软件组件可以包括许多不同种类的计算机程序。DPS可以通过将软件组件从NVS复制到RAM然后在处理器上执行他们来运行软件组件。处理器可以依据其设计架构以及依据其指令集架构(ISA)来描述。常规的处理器通常遵循冯诺依曼架构、哈佛架构、修改的哈佛架构、或类似的架构。根据任何这样的架构,用于处理器或处理单元的设计架构可以包括算术逻辑单元和控制单元,其中,控制单元包含程序计数器。为开始执行程序,该程序中第一指令的地址被加载到程序计数器中。处理器然后在该地址处提取指令、执行该指令,并递增程序计数器以指向程序中的下一顺序指令。处理器可以重复该提取循环,直到程序的最后指令已被执行。然而,程序可以使用控制转移指令(例如,分支指令)来改变执行序列。控制转移指令还可以被称为“控制流指令”。例如,分支指令(或另一控制流指令)可以使处理器利用除了下一顺序指令之外的指令的地址替换程序计数器的内容。另外,控制流指令可以以某个断言(例如,分支如果指定寄存器的内容不等于零(branchifthecontentofaspecifiedregisterdoesnotequalzero))的真实性为条件来对程序计数器进行修改。因此,程序可以在不同的条件下执行不同的指令序列。一些常见的控制流指令包括条件指令(例如,ifthenelse)和循环指令(例如,for、while)。出于本公开内容的目的,用于直接控制或改变控制流的计算机指令可以被称为“控制流指令”。许多不同的语言提供许多不同种类的控制流指令。控制流指令的小样本包括但不限于诸如(a)ifthenelse(b)for(c)while(d)branch、(e)branchifequal之类的指令。类似地,包括控制流指令的计算机语言可以被称为“控制流语言”,并且以控制流语言实现或编写的计算机程序可以被称为“控制流程序”。类似地,支持一个或多个控制流语言或程序的处理器可以被称为“控制流处理器”并且被称为具有“控制流架构”。附图说明图1是具有包括数据流处理器和数据流转换器的组件的数据处理系统的示例性实施例的框图。图2是具有由数据流转换器用于将控制流程序转换成数据流程序的各种图的示例性实施例的框图。图3呈现了用于生成控制依赖图的过程的示例性实施例的流程图。图4呈现了用于标识控制依赖区域的过程的示例性实施例的流程图。图5呈现了用于生成数据流图的过程的示例性实施例的流程图。图6呈现了数据流图的示例性实施例。图7呈现了控制流图的另一示例性实施例。图8呈现了控制依赖图的另一示例性实施例。具体实施方式常规处理器通常是控制流处理器。然而,计算机工程师当前正在开发使程序能够在没有控制流指令的情况下执行的处理器。具体而言,工程师正在开发一种不使用程序计数器来控制程序的执行流的处理器。更具体而言,处理器不是基于程序计数器来控制执行流,而是基于由程序的指令所引用的数据的可用性来控制执行流。这种类型的设计可以被称为“数据流架构”。类似地,具有数据流架构的处理器可以被称为“数据流处理器”。而且,出于本公开内容的目的,数据流语言是具有用于操纵数据的指令但没有控制流指令的计算机语言。类似地,数据流指令是来自数据流语言的计算机指令,而数据流程序是以数据流语言体现或编码的计算机程序。因此,数据流处理器能够执行数据流程序,并且数据流程序不使用控制流指令。为了使计算机程序直接在处理器上执行,用于处理器的架构可以要求程序以机器语言或机器代码来表达。程序的机器语言版本或表达可以被认为是最低级的表达。然而,软件开发者通常以较高级的语言(例如汇编、C等)编写或创建程序。程序的最高级表达可以被称为该程序的“源代码”。然后软件开发者可以使用诸如编译器、汇编器和链接器之类的工具将程序的源代码转换成该程序的较低级表达。这样的工具通常可以被称为“翻译器”。另外,软件开发者可以使用翻译器将代码从一种语言翻译为另一种语言,其中,那些语言中的任一种都不必是比另一种语言较低级的。虽然如此,充当输入的代码还是可以被称为“源代码”或“源程序”,并且所产生的代码可以被称为“目标代码”。另外地或替代地,被称为“解释器”的工具可以用于在处理器上执行程序的高级表达。例如,解释器的机器语言表达可以直接在处理器上执行,并且程序的高级表达可以在解释器上执行。为了创建执行特定任务或任务集的计算机程序,对于软件开发者而言,与将程序编写为数据流程序相比将程序编写为控制流程序可能是较容易的。另外,已存在许多不同类型的控制流程序,并且可能期望的是,将那些程序中的许多程序转换成数据流程序,以使转换的程序能够在数据流处理器上运行。如上所述,本公开内容涉及用于将控制流程序自动转换成数据流程序的技术。具体而言,如以下更详细描述的,本公开内容涉及使用控制依赖图将控制流程序转换成数据流程序的方法和装置。具体而言,可以使用被称为数据流转换器的工具来将控制流程序转换成数据流程序。并且如以下更详细描述的,作为转换过程的一部分,数据流转换器可以将控制流程序的不同部分分配给不同的控制依赖区域。数据流转换器然后可以考虑控制流程序中每个变量的每个定义和每个使用。如果定义在与使用不同的控制依赖区域中,则数据流转换器可以确定需要特殊数据流指令。如下所示,该指令可以被称为“开关”指令。如以下更详细描述的,开关指令可以基于定义区域的分支条件将值路由到特定信道。此外,本文描述的途径可以允许数据流转换器避免插入不必要的数据流指令,从而保持数据流图小。本公开内容呈现了其中数据流转换器被实现为编译器的一部分的示例性实施例。然而,如以下更详细描述的,在其他实施例中数据流转换器可以被实现为不同类型的工具的一部分或者实现为独立工具。图1是具有包括数据流处理器(DFP)20和数据流转换器32的组件的数据处理系统100的示例性实施例的框图。DFP20是基于由计算机程序指令引用的数据的可用性来控制执行流而不是基于程序计数器来控制执行流的处理器。换言之,数据流处理器20使用数据流架构。在图1的实施例中,DFP20包括许多不同的处理元素(PE)22。数据流处理器中的PE还可以被称为“数据流核心”(DFC)。因此,DFC22能够执行数据流指令。DFP20还包括许多不同的通信信道24,其使DFC中的至少一些能够与DFC中的至少一些其他DFC进行通信。而且,出于本公开内容的目的,通信信道是可由多个DFC写入和读取的DFP内的数据存储组件。出于本公开内容的目的,除非上下文另有明确规定,否则“信道”应当被理解为指代DFP中的通信信道。信道可以在一些方面像寄存器一样操作。然而,信道的主要目的通常是充当将输入连接到其消费者的缓冲区。通常,数据流指令或者消费或者产生至少一个信道。如上所述,DFP20中的执行流基于馈送到数据流程序的指令中的数据的可用性。因此,DFP20中的每个DFC22都由其输入本文档来自技高网...

【技术保护点】
1.一种利用用于将控制流程序自动转换成数据流程序的技术的数据处理系统,所述数据处理系统包括:处理器;非暂时性机器可读介质,其响应于所述处理器;以及翻译器,其存储在所述机器可读介质中,其中,所述翻译器当由所述数据处理系统执行时使所述数据处理系统能够:自动生成控制流程序的控制依赖图;至少部分地基于所述控制依赖图,自动生成数据流图;以及至少部分地基于所述数据流图,自动生成数据流程序。

【技术特征摘要】
2017.05.31 US 15/609,5831.一种利用用于将控制流程序自动转换成数据流程序的技术的数据处理系统,所述数据处理系统包括:处理器;非暂时性机器可读介质,其响应于所述处理器;以及翻译器,其存储在所述机器可读介质中,其中,所述翻译器当由所述数据处理系统执行时使所述数据处理系统能够:自动生成控制流程序的控制依赖图;至少部分地基于所述控制依赖图,自动生成数据流图;以及至少部分地基于所述数据流图,自动生成数据流程序。2.根据权利要求1所述的数据处理系统,其中,所述翻译器当被执行时使所述数据处理系统能够:自动将所述控制流程序中的变量与不同控制依赖区域相关联;针对所述控制流程序中的至少一个特定变量,自动确定是否所述变量在一个控制依赖区域中被定义并且在不同的控制依赖区域中被使用;以及响应于确定所述变量在一个控制依赖区域中被定义并且在不同的控制依赖区域中被使用,自动将开关指令插入到所述数据流程序中。3.根据权利要求2所述的数据处理系统,其中:所述开关指令命名(i)用于接收控制值的控制信道、(ii)用于接收输入值的输入信道、以及(iii)至少两个输出信道;并且所述开关指令被设计为当被执行时执行以下操作:至少部分地基于所述控制值来选择所述输出信道中的一个;以及在所选择的输出信道上产生所述输入值。4.根据权利要求3所述的数据处理系统,其中,所述开关指令还被设计为当被执行时消费所述控制值和所述输入值。5.根据权利要求1所述的数据处理系统,其中,所述翻译器当被执行时使所述数据处理系统能够:自动标识基本块之间的控制依赖,其中,每个控制依赖涉及控制依赖基本块和父基本块;自动确定基本块的执行频率;以及至少部分地基于对以下的确定(a)基本块序列中的每个基本块是否直接控制依赖于相同的父基本块以及(b)所述序列中的每个基本块是否具有相同的执行频率,自动生成控制依赖区域的列表。6.根据权利要求1所述的数据处理系统,其中:所述控制流程序至少具有两个点(A,B)以及结束;并且自动生成所述控制依赖图的所述操作包括:确定是否存在多于一条从点A到所述结束的路径;如果存在多于一条从点A到所述结束的路径,则确定是否所述路径中的一条经过点B,并且所述路径中的另一条不经过点B;响应于确定(a)存在多于一条从点A到所述结束的路径以及(b)所述路径中的一条经过B并且所述路径中的另一条不经过点B,将点B标记为控制依赖于点A;以及当且仅当点B控制依赖于点A时,在所述控制依赖图中包括从点A到点B的边。7.根据权利要求6所述的数据处理系统,其中,点A和点B中的每一者包括来自由以下各项构成的组的至少一项:来自所述控制流程序的指令;来自所述控制流程序的指令的、循环中的实例;来自所述控制流程序的基本块;以及来自所述控制流程序的基本块的、循环中的实例。8.根据权利要求1所述的数据处理系统,其中,所述翻译器包括编译器。9.根据权利要求1所述的数据处理系统,其中:所述处理器包括控制流处理器;所述数据处理系统还包括数据流处理器;所述翻译器包括要由所述控制流处理器执行的控制流指令;所述翻译器当由所述控制流处理器执行时使所述数据处理系统能够将所述数据流程序存储在所述机器可读介质中;所述控制流程序包括源程序的控制流版本;所述数据流程序包括所述源程序的数据流版本;并且所述数据流程序使所述数据处理系统能够在所述数据流处理器上执行所述源程序的数据流版本。10.一种用于将控制流程序自动转换成数据流程序的方法,所述方法包括:使用在数据处理系统中执行的翻译器来自动生成控制流程序的控制依赖图;使用在所述数据处理系统中执...

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

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

1