用于实现代码划分和在异构处理器内核上执行的高效有向非循环图模式匹配的制作方法

文档序号:9713535阅读:326来源:国知局
用于实现代码划分和在异构处理器内核上执行的高效有向非循环图模式匹配的制作方法
【专利说明】用于实现代码划分和在异构处理器内核上执行的高效有向非 循环图模式匹配
【背景技术】
[0001 ]移动电子设备(例如,蜂窝电话、手表、头戴式耳机、远程控制等等)与以往任何时 候相比变得更加复杂,并且现在通常包括多个处理器、片上系统(SoC)、以及允许移动设备 用户在其移动设备上执行复杂的和功率密集的软件应用(例如,视频流、视频处理等等)的 其它资源。随着复杂度和功耗的增加,更好地利用移动设备的资源和能力的新的和改进的 处理技术正在开始涌现。
[0002] 这些新兴的技术包括能够对被设计用于在通用应用处理器上执行的代码进行编 译,使得该代码适合于在诸如数字信号处理器(或DSP)之类的辅助处理器上执行的系统。特 别地,应用程序可以被划分成单元或块,并且可以基于所识别的不同的处理部件(例如, DSP、图形处理单元或GPU等等)的效率/能力来将单元/块分布到该不同的处理部件。这使得 主或中央处理单元(CPU)或应用处理器将其操作中的一些操作卸载到辅助处理器,以节省 功率和/或改善性能。
[0003] 但是,确定应用程序如何被划分以及哪些部分最适合于在辅助处理器上执行,经 常是困难的设计任务。也就是说,只要存在用于识别并且将给定的代码段划分成非常适合 于在不同类型的内核或处理单元中执行的部件的有效方式,将操作卸载到辅助处理器就可 以改善移动设备的性能和功耗特性。
[0004] 现有的技术可以利用不同的技术来识别和/或处理代码。一些技术可以利用自动 代码划分,并且可以通过程序依赖图来表示应用代码,用于使用固有的并行性和已知的通 信开销来对代码进行划分。这些技术没有利用可能已知对特定的处理单元(诸如数字信号 处理器( DSP))有益的预定义的模式。其它技术可以检测代码(或二进制)内的惯用语法 (idiom)(或者已知的/预定义的指令集),并且利用硬件辅助指令(即,复杂指令集计算或 "CISC"指令)来取代惯用语法。这些技术通常只可以处理有限的粒度(大部分是直线型的指 令)和简单的模式,诸如精确的模式或者有限的自由度。另外,存在用于发现重复代码和使 用高级源代码来检测克隆的某些技术。此外,图模式匹配已经被用在数据库系统中。
[0005] 存在使用指令选择算法的其它技术,所述指令选择算法利用树型模式匹配来调整 代码以包括低开销指令。特别地,自底向上的重写系统(或BURS)算法可以被用来通过迭代 地匹配与输入代码(例如,应用、例程等等)有关的输入树内的各个子树以便发现最佳开销 指令集(即,覆盖整棵树并且还提供最低开销/最高利益的指令的组合),来确定针对输入代 码的最佳指令集。基于模式匹配,可以生成用于在计算设备上执行的新的、改进的指令集。
[0006] 但是,当对使用基于图形表示的复杂的代码的部分进行卸载时,已知的技术可能 是不适合的。换言之,现有的技术可能不使用代码的有向非循环表示进行匹配来识别用于 异构多核或分布式系统的最佳卸载方式的编译器后端解决方案。

【发明内容】

[0007] 在各个方面中,计算设备可以执行用于当可以自动地确定输入代码的部分非常适 合于辅助处理器时,将该输入代码的部分从CPU或应用处理器("第一处理器")卸载到辅助 处理器的方法。一个方面方法可以包括:生成输入代码的基于图形的中间表示,其中,输入 代码的基于图形的中间表示可以是有向非循环图(DAG),将每一个节点或节点的组合与预 定义的语法中的一种或多种模式进行比较,其中每一种模式可以是DAG模式并且可以与开 销度量相关联,基于比较来识别部分地覆盖所述输入代码的基于图形的中间表示的模式集 合,以及将输入代码的片段从第一处理器卸载到辅助处理器,所述输入代码的片段与所识 别的模式集合中具有最佳累积效应的语法模式的组合相关联。在一个方面中,将每一个节 点或节点的组合与预定义的语法中的一种或多种模式进行比较可以包括:将每一个节点或 节点的组合与被存储在启发式表格中的模式信息进行比较。在一个方面中,该计算设备可 以包括片上系统。在一个方面中,所述辅助处理器可以是数字信号处理器(DSP)和图形处理 单元(GPU)中的一种。在一个方面中,已知所述预定义的语法中的模式非常适合于辅助处理 器。在一个方面中,最佳累积效应可以是最低累积开销和最高累积利益中的一种。在一个方 面中,该方法还可以包括:基于所述每一个节点或所述节点的组合与所述预定义的语法中 的一种或多种模式的比较来生成用于向开发者呈现的信息,所述信息指示可以被配置用于 辅助处理器的输入代码的片段。
[0008] 在另一个方面中,被配置为当可以自动地确定输入代码的部分非常适合于辅助处 理器时对该输入代码的部分进行卸载的计算设备可以包括:用于执行上面描述的方面方法 的功能的单元。
[0009] 在另一个方面中,被配置为当可以自动地确定输入代码的部分非常适合于辅助处 理器时对该输入代码的部分进行卸载的计算设备可以包括:存储器、辅助处理器、以及耦合 到所述存储器和所述辅助处理器的处理器,其中所述处理器可以被配置有用于执行上面描 述的方面方法的操作的处理器可执行指令。
[0010] 在另一个方面中,一种非暂时性处理器可读存储介质,其具有被存储在其上的处 理器可执行软件指令,所述处理器可执行软件指令被配置为使处理器执行用于当可以自动 地确定输入代码的部分非常适合于辅助处理器时计算设备对该输入代码的部分进行卸载 的操作,其中所存储的操作包括上面描述的方面方法的操作。
【附图说明】
[0011] 被并入本文并且构成本说明书的一部分的附图示出了本发明的示例性方面,并且 连同上面给出的概括描述以及下面给出的【具体实施方式】用来解释本发明的特征。
[0012] 图1是示出了用于基于有向非循环图(DAG)模式匹配来将用于执行的代码从CPU或 应用处理器卸载到辅助处理器的方面方法的过程流程图。
[0013] 图2是示出了用于基于有向非循环图(DAG)模式匹配来将用于执行的代码从CPU或 应用处理器卸载到辅助处理器的另一个方面方法的过程流程图。
[0014] 图3是示出了适合于与各个方面一起使用的示例性语法和代码输入DAG的图。
[0015]图4是示出了基于DAG模式匹配来将用于执行的代码部分从CPU或应用处理器卸载 到辅助处理器的方面方法的过程流程图。
[0016] 图5是示出了适合于与各个方面一起使用的示例性语法和代码输入DAG的图。
[0017] 图6是适合于与各个方面一起使用的智能电话型移动计算设备的部件框图。
【具体实施方式】
[0018] 将参照附图来详细地描述各个方面。在任何可能的情况下,将贯穿附图使用相同 的附图标记来指代相同的或者类似的部件。对于特定示例和实现方式的提及是出于说明性 的目的的,而不旨在限制本发明或者权利要求的范围。
[0019] 本文使用词语"示例性的"来意指"充当示例、实例或说明"。本文中被描述为"示例 性的"任何实现方式不必然地被解释为优选的或者比其它实现方式具有优势。
[0020] 本文使用术语"移动计算设备"或"计算设备"来指代下列各项中的任何一项或者 全部:蜂窝电话、智能电话(例如,iPhone?)、手写电脑(web-pad)、平板计算机、具备互联 网能力的蜂窝电话、具备WiFi能力的电子设备、个人数据助理(PDA)、膝上型计算机、个人计 算机、以及被装备有至少应用处理器(或通用处理器)和辅助处理器(例如,数字信号处理 器、协处理器、片上系统上的另一个处理器等等)的类似的电子设备。
[0021] 各个方面提供了用于基于模式匹配表示输入代码的有向非循环图(DAG)来将用于 执行的该输入代码的部分从CHJ或应用处理器(在本文通常被称为"第一处理器")卸载到计 算设备内的辅助处理器的方法。计算设备可以执行该方面方法,以自动地和高效地检测该 代码中已知对于利用特定类型的内核(例如,DSP、GPU等等)来进行处理有好处的感兴趣的 模式。计算设备可以自动地识别部分地覆盖输入代码的输入数据流程图的DAG模式集合,并 且可以当在辅助处理器上执行时对代码中与最小开销相关联的部分进行卸载,或者以其它 方式从卸载中提供最高的利益。这些方面方法可以在利用典型的输入代码(例如,典型的 Java语言源代码)进行工作的计算设备中实现,并且因此可能不需要由代码开发者进行任 何特殊的预处理或者编排格式(例如,手动地添加指示符、API调用、预定义的代码格式化等 等)。实现各个方面的计算设备可以自动地识别非常适合于卸载到辅助处理器的代码部分, 并且使用传统的机制来发送、传送或者以别的方式规定对这样识别的非常适合的代码的卸 载。
[0022] 各个方面方法利用将DAG的节点与预定义的语法模式(其也包括DAG)进行比较的 模式匹配算法。各个方面方法可以由计算设备来执行,以确定代码的中间表示(IR),并且生 成可以通过模式匹配算法来处理的DAG表示。这样的算法可以尝试将代码的DAG表示中的模 式与被存储在存储器中的DAG模式(被称为"语法")进行匹配,所述被存储在存储器中的DAG 模式已知非常适合于在辅助处理器上执行。可以对DAG表示进行修整,使得不存在循环。例 如,语法中的DAG模式可以与在数字信号处理器(DSP)上高效地执行的某些简单的功能相对 应。计算设备可以识别覆盖整个DAG的语法模式(例如,表示输入代码中的代码循环或方法 的DAG),并且可以基于与语法模式相关联的开销(或利益)来识别最佳匹配模式。例如,可以 将输入代码的特定DAG与语法内的若干模式进行匹配;但是,匹配模式中的一种匹配模式可 以具有在辅助处理器上执行相关联的代码的相对低的开销。计算设备可以执行模式匹配, 使得在输入IR代码内一次检测预定义的语法中的多个已知的DAG模式。在各个方面中,计算 设备的操作可以在运行时间执行,例如,结合即时(JIT)编译器一起执行。换言之,利用与输 入代码相关联的节点和边的图(即,在边方向和节点类型不能被分离情况下的DAG),计算设 备可以执行模式匹配操作,以寻找该图中的节点/边与语法内的模式的精确匹配。从任一节 点类型(例如,在模式中的位置处的类型A或类型B)的意义上说,匹配模式本身可以是灵活 的。该精确匹配是针对输入代码的子图上的完全模式的。所以,计算设备可以从语法中发现 均部分地覆盖该输入的、但是完全地覆盖该输入的子图的模式。
[0023] 在一个方面中,对于输入代码的DAG中的每一个节点而言,计算设备可以计算与该 节点连同预定义的语法的匹配规则/模式相匹配的所有可能"类型"的表格(如可以在BURS 解决方案中类似地进行)。计算设备还可以自动地识别和/或存储针对以每一个节点为根的 模式的累积开销(如
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1