用于优化硬件FIFO指令的方法、系统和计算机存储介质技术方案

技术编号:35603005 阅读:21 留言:0更新日期:2022-11-16 15:24
本公开涉及用于优化硬件FIFO指令的方法、系统和计算机存储介质。描述了用于调度先进先出(FIFO)指令的方法、系统和装置。在一个方面,一种方法包括接收表示将由具有硬件处理器的处理单元执行的程序的代码的数据。对于一个或多个硬件处理器中的每一个,在表示代码的数据中标识用于由硬件处理器执行的独立FIFO指令组的顺序。对于用于由硬件处理器执行的每个独立的FIFO指令组,确定表示从独立的FIFO指令组到达程序的末尾需要多长时间的路径长度度量。至少基于用于由硬件处理器执行的每个独立FIFO指令组的路径长度度量来生成用于由硬件处理器执行的独立FIFO指令组的新顺序。处理器执行的独立FIFO指令组的新顺序。处理器执行的独立FIFO指令组的新顺序。

【技术实现步骤摘要】
用于优化硬件FIFO指令的方法、系统和计算机存储介质
[0001]分案说明
[0002]本申请属于申请日为2019年11月26日的中国专利技术专利申请201980093043.X的分案申请。

技术介绍

[0003]一些处理器(例如,域特定处理器)可以包括长延迟、高吞吐量硬件单元。例如,一些处理器可以包括脉动阵列以有效地计算复杂的数值工作负荷。用于这种硬件单元的自然编程接口是在处理器的指令集架构(ISA)中定义的先进先出(FIFO)队列,因为存在负责将数据压入(push)到这些单元并将数据弹出(pop)这些单元的指令。然而,硬件FIFO对指令施加排序约束,并且可以将额外的状态保持为配置,使得编译器难以有效地优化和调度指令。

技术实现思路

[0004]本说明书描述了涉及例如在编译时改进FIFO指令的顺序以减少执行机器学习和其他计算时的延迟的技术。
[0005]通常,本说明书中描述的主题的一个创新方面可以体现在一种方法中,该方法包括接收表示要由包括硬件处理器的处理单元执行的程序的代码的数据。该方法包括对于一个或多个硬件处理器中的每一个:在表示程序的代码的数据中标识用于由硬件处理器执行的独立的先进先出(FIFO)指令组的顺序;对于由硬件处理器执行的每个独立的FIFO指令组,确定路径长度度量,路径长度度量表示从独立的FIFO指令组到达程序的末尾将花费多长时间;以及至少基于用于由硬件处理器执行的每个独立的FIFO指令组的路径长度度量,生成用于由硬件处理器执行的独立的FIFO指令组的新顺序。至少基于用于一个或多个硬件处理器的独立的FIFO指令组的每个新顺序来生成用于程序的更新代码。基于用于程序的更新代码,生成用于由硬件处理器执行的输出代码。将输出代码提供给硬件处理器。该方面和其他方面的其他实施方式包括被配置成执行在计算机存储设备上编码的方法的动作的相应系统、方法和计算机程序。能够借助于安装在系统上的软件、固件、硬件或它们的组合来如此配置一个或多个计算机的系统,这些软件、固件、硬件或它们的组合在操作中使系统执行动作。能够借助于当由数据处理装置执行时使该装置执行动作的指令来如此配置一个或多个计算机程序。
[0006]这些和其他实施方式可以各自可选地包括以下特征中的一个或多个。在一些方面,表示程序的代码的数据包括程序的源代码的编译器中间表示。在一些方面,输出代码包括可由一个或多个硬件处理器执行的编译机器代码。
[0007]一些方面包括基于表示程序的代码的数据,生成表示用于程序的指令序列的图。对给定硬件处理器生成独立的FIFO指令组的新顺序可以包括在图中重新排序独立的FIFO指令组以生成更新图。至少基于用于一个或多个硬件处理器的独立FIFO指令组的每个新顺序来生成用于程序的更新代码可以包括基于更新图来生成更新指令序列。
[0008]在一些方面,至少基于用于一个或多个硬件处理器的独立FIFO指令组的每个新顺
序来生成用于程序的更新代码可以包括,在更新图中标识未被标识为FIFO指令的指令;对于所标识的指令中的一个或多个:至少基于独立的FIFO指令组与更新图中的已标识的指令之间的路径长度来选择独立的FIFO指令组;以及在更新代码中调度已标识的指令以及所选择的长延迟组。
[0009]在一些方面,多个硬件处理器执行独立的FIFO指令组。一些方面可以包括对于多个硬件处理器中的至少一个,基于独立的FIFO指令组是否在程序的关键路径上,确定由至少一个硬件处理器执行的独立的FIFO指令集的顺序。一些方面可以包括确定第一硬件处理器包括多个独立的FIFO指令组;以及确定第二硬件处理器的独立FIFO指令组是接收由第一硬件处理器的多个独立的FIFO指令组中的一个输出的数据的指令。在一些方面中,生成用于由第一硬件处理器执行的独立的FIFO指令组的新顺序可以包括响应于确定多个硬件处理器中的第二硬件处理器的独立的FIFO指令组是接收由第一硬件处理器的多个独立的FIFO指令组中的一个输出的数据的指令,移动第一硬件处理器的一个独立的FIFO指令组以在第一硬件处理器的一个或多个其他独立的FIFO指令组之前执行。
[0010]在一些方面中,每个独立的FIFO指令组包括用于向硬件处理器提供输入数据的一或多个输入指令以及用于基于输入数据从硬件处理器输出数据的一或多个输出指令。在一些方面中,处理单元的特定硬件处理器是使用多种不同配置执行指令的可配置硬件处理器。一些方面可以包括在表示程序的代码的数据中标识将由特定硬件处理器使用用于特定硬件处理器的相同配置执行的FIFO指令集;以及在用于应用的更新代码中确定用于FIFO指令集的新顺序,使得在没有需要特定硬件处理器的不同配置的任何居间FIFO指令的情况下,按序列执行FIFO指令集。
[0011]在一些方面中,一个或多个硬件处理器包括多个处理器。一些方面可以包括对于多个硬件处理器中的每一个,确定表示硬件处理器将花费多长时间来完成用于硬件处理器的所有FIFO指令的性能度量;基于用于多个硬件处理器中的每一个的性能度量来确定多个硬件处理器的评估顺序;以及按照所确定的评估顺序,一次确定一个用于多个硬件处理器中的每一个的独立的FIFO指令组的新顺序。
[0012]本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。通过生成由硬件处理器使用以输入和输出数据的FIFO指令的改进顺序,可以减少执行程序时的延迟。非FIFO指令可以与FIFO指令(例如,与最接近的FIFO指令)一起分组,以进一步改善来减少执行程序时的延迟。例如,通过将为FIFO指令提供数据以加载到硬件处理器中的另一指令与FIFO指令分组,可以将指令一起调度使得FIFO指令必须等待这类数据的时间量减少。通过减少执行程序时的延迟,可以更快且更有效地完成复杂的工作负荷,例如深度神经网络工作负荷。因此,通过在编译时间利用所描述的技术,相对于在相同硬件处理器上执行的常规编译程序,可以在运行时以减少的延迟执行给定程序。此外,通过在生成FIFO指令的改进顺序期间考虑特定硬件处理器的特性,FIFO指令的执行可以被定制/适应于执行FIFO指令的系统中存在的特定硬件处理器。
[0013]在以下附图和描述中阐述了本说明书中描述的主题的一个或多个实施方式的细节。根据说明书、附图和权利要求书,本主题的其他潜在特征、方面和优点将变得显而易见。
附图说明
[0014]图1是程序处理系统修改程序并且使用所修改的程序执行计算的示例性环境的框图。
[0015]图2描绘了程序的指令的有向图和程序的指令的更新图。
[0016]图3是图示用于修改程序的示例性过程的流程图。
[0017]在各个附图中,相似的附图标记和名称指示相似的元素。
具体实施方式
[0018]通常,本说明书中描述的主题涉及调度用于硬件处理器的硬件FIFO指令以减少由处理器执行的程序的总延迟。处理单元可以包括多个硬件处理器,包括高效地执行复杂计算的长延迟、高吞吐量硬件处理器。例如,长延迟硬件处理器可以被配置为使用专用硬件来执行机器学习模型的矩本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种由一个或多个数据处理装置执行的方法,所述方法包括:接收表示要由包括硬件处理器的处理单元执行的程序的代码的数据;对于多个所述硬件处理器中的每一个:在表示所述程序的所述代码的所述数据中,标识用于由该硬件处理器执行的先进先出FIFO指令的一个或多个独立组;以及确定性能度量,所述性能度量表示由该硬件处理器执行的操作在所述程序中的性能优势程度;基于所述多个硬件处理器中的每个硬件处理器的所述性能度量来确定所述多个硬件处理器的评估顺序;以及以所确定的评估顺序评估所述多个硬件处理器中的每一个,以确定是否对所述多个硬件处理器中的每个硬件处理器的所述FIFO指令重新排序;对于所述多个硬件处理器中的至少一个,确定所述硬件处理器的所述FIFO指令的新顺序;至少基于所述多个硬件处理器的FIFO指令的每个新顺序来生成所述程序的更新代码;基于所述程序的所述更新代码来生成输出代码,以用于由所述硬件处理器执行;以及将所述输出代码提供给所述硬件处理器。2.根据权利要求1所述的方法,其中,确定所述硬件处理器的所述FIFO指令的新顺序包括:对于用于由所述硬件处理器执行的FIFO指令的每个独立组,确定路径长度度量,所述路径长度度量表示从FIFO指令的该独立组到达所述程序的末尾要花费多长时间;以及至少基于用于由所述硬件处理器执行的FIFO指令的每个独立组的所述路径长度度量,生成用于由所述硬件处理器执行的FIFO指令的所述独立组的新顺序。3.根据权利要求1所述的方法,还包括将一个或多个硬件FIFO单元标识为所述多个硬件处理器,所述一个或多个硬件FIFO单元中的每一个包括使用FIFO队列建模的硬件处理器。4.根据权利要求1所述的方法,其中,每个硬件处理器的所述性能度量至少部分地基于该硬件处理器将花费多少时间来完成该硬件处理器的FIFO指令的所述一个或多个独立组的所述FIFO指令。5.根据权利要求1所述的方法,其中,每个硬件处理器的所述性能度量至少部分地基于将花费多少时间来执行该硬件处理器的所述FIFO指令的所有压入和弹出。6.根据权利要求1所述的方法,其中,每个硬件处理器的所述性能度量至少部分地基于(i)该硬件处理器的吞吐量、(ii)由该硬件处理器对数据执行的计算、(iii)该硬件处理器执行所述计算的数据的量或(iv)(i)、(ii)和(iii)的任意组合。7.根据权利要求1所述的方法,其中,表示所述程序的所述代码的所述数据包括所述程序的源代码的编译器中间表示。8.根据权利要求1所述的方法,其中,所述输出代码包括能够由所述硬件处理器执行的编译机器代码。9.根据权利要求1所述的方法,其中,对于所述多个硬件处理器中的至少一个,确定所述硬件处理器的所述FIFO指令的新顺序包括:
确定第一硬件处理器的FIFO指令的新顺序;以及针对所确定的评估顺序中的一个或多个后续硬件处理器中的每一个,经受基于所述第一硬件处理器的FIFO指令的所述新顺序来施加在该后续硬件处理器的FIFO指令的顺序上的一个或多个约束,确定该后续硬件处理器的FIFO指令的新顺序。10.根据权利要求9所述的方法,其中,以所确定的评估顺序评估所述多个硬件处理器中的每一个减少了施加在具有较高性能度量的硬件处理器的FIFO指令的所述新顺序上的一定数目的约束,所述一定数目的约束否则将由具有较低性能度量的硬件处理器的FIFO指令的所述新顺序施加在具有较高性能度量的所述硬件处理器的FIFO指令的所述新顺序上。11.一种系统,所述系统包括:数据处理装置;以及与所述数据处理装置进行数据通信的存储器存储装置,所述存储器存储装置存储指令,所述指令能够由所述数据处理装置执行并且在这样的执行时使所述数据处理装置执行操作,所述操作包括:接收表示要由包括硬件处理器的处理单元执行的程序的代码的数据;对于多个所述硬件处理器中的每一个:在表示所述程序的所述代码的所述数据中,标识用于由该硬件处理器执行的先进先出FIFO指令的一个或多个独立组;以...

【专利技术属性】
技术研发人员:徐元仲詹姆斯
申请(专利权)人:谷歌有限责任公司
类型:发明
国别省市:

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

1