用于多架构异构计算的可执行代码的动态分配的制作方法

文档序号:36233496发布日期:2023-12-01 12:19阅读:92来源:国知局
用于多架构异构计算的可执行代码的动态分配的制作方法

本公开中描述的一些实施例涉及计算设备,更具体地,但不排他地,涉及异构多架构计算系统。


背景技术:

1、在计算领域中,术语性能是指由计算机化系统执行的有用工作量。有用工作的一些特性包括工作被执行的速率、计算资源的利用(例如所使用的存储器的量或所消耗的网络带宽量),以及计算机化系统对输入作出反应所花费的时间量。有多种度量用于测量有用工作量。一些度量对于计算机化系统的环境是特定的;一些其它度量是可以在各种计算机化系统中测量的一般度量。

2、如本文所使用的,术语“处理单元”用于表示被配置成执行一组操作的任何类型的可编程或非可编程电路。处理单元可以包括硬件以及软件。例如,处理单元可以包括一个或多个处理器和承载程序的暂时性或非暂时性存储器,当程序由一个或多个处理器执行时,该程序使处理单元执行相应的操作。

3、此外,如本文中所使用的,术语“改善性能”是指改善根据一个或多个性能度量所测量或计算的一个或多个性能得分。用于测量处理单元的性能的两个常见度量是等待时间和吞吐量。等待时间是处理单元执行所标识的操作所花费的时间量。所标识的操作的一些示例是,将数据分组从源传送到目的地,以及响应于输入值执行所标识的计算机指令集。改善等待时间是指减少处理单元执行所标识的操作所花费的时间量。吞吐量是处理单元在一个时间间隔中执行的所标识的操作的量,例如在该时间间隔期间传送的数据分组的量。系统吞吐量的另一示例是处理单元在时间间隔内执行所标识的计算机指令集的输入值的量。提高吞吐量是指增加处理单元在时间间隔内执行的标识的操作的量。

4、在计算领域中,术语“协处理器”被用于描述辅助处理单元,该辅助处理单元被用于补充系统的主处理单元,并通过从主处理单元卸载一些处理器密集的任务来帮助改善系统的性能。随着对高性能计算的需求的增加,使用协同处理来提高性能也在增加。一些协处理器被设计成执行唯一任务。常见的协处理器是用于执行浮点运算任务的浮点处理器。可以由协处理器执行的唯一任务的其它示例包括网络输入-输出接口任务、加密、字符串处理、图形处理、线性代数处理、机器学习处理和信号处理。其他协处理器可以被配置为执行计算机程序的任意部分,而不是被表征为唯一任务。

5、协同处理不同于分布式处理。在分布式系统中,问题被分成多个独立的任务,每个任务由多个处理单元中的一个或多个处理单元来解决,这些处理单元基本上彼此独立地操作,可能在它们之间通信。在协同处理中,协处理器补充主处理单元的功能,并与主处理单元一起工作。

6、需要将计算机程序的某些部分委托给一个或多个协处理器来执行。


技术实现思路

1、本公开的一些实施例描述了在包括多个处理单元的异构计算系统中执行软件程序,每个处理单元具有多个计算机架构中的一个。

2、上述和其它目的通过独立权利要求的特征来实现。进一步的实施方式从从属权利要求、说明书和附图中是明显的。

3、上述和其它目的通过独立权利要求的特征来实现。进一步的实施方式从从属权利要求、说明书和附图中是明显的。

4、根据本发明的第一方面,一种用于执行软件程序的装置包括多个处理单元和至少一个硬件处理器,所述至少一个硬件处理器适于:在软件程序的中间表示中标识调用块和目标块,其中,中间表示包括多个块,每个块与软件程序的多个执行块中的一个执行块相关联并且包括中间指令集,其中,调用块包括至少一个控制流中间指令以执行目标块的至少一个目标中间指令;使用目标块生成目标可执行指令集;当调用可执行指令集由调用处理单元执行并且目标可执行指令集由目标处理单元执行时,使用调用块并且使用用于唤起目标可执行指令集的至少一个计算机控制指令,来生成调用可执行指令集;配置调用处理单元用于执行调用可执行指令集;以及配置目标处理单元用于执行目标可执行指令集。在软件程序的中间表示中标识调用块和目标块允许例如在软件程序的运行时期间动态生成调用可执行指令集并且附加地或替代地生成目标可执行指令集,并因此允许动态配置调用处理单元并且附加地或替代地配置目标处理单元。调用处理单元的并且附加地或替代地目标处理单元的动态配置有助于通过将调用块的以及附加地或替代地将目标块的执行委托给一个或多个协处理器来提高执行软件程序的系统的性能。

5、根据本发明的第二方面,一种用于执行软件程序的方法包括:在软件程序的中间表示中标识调用块和目标块,其中,中间表示包括多个块,每个块与软件程序的多个执行块中的一个执行块相关联并且包括中间指令集其中,调用块包括至少一个控制流中间指令以执行目标块的至少一个目标中间指令;使用目标块生成目标可执行指令集;当调用可执行指令集由多个处理单元中的调用处理单元执行并且目标可执行指令集由多个处理单元中的目标处理单元执行时,使用调用块并且使用用于唤起目标可执行指令集的至少一个计算机控制指令;配置调用处理单元用于执行调用可执行指令集,来生成调用可执行指令集;以及配置目标处理单元用于执行目标可执行指令集。

6、根据本发明的第三方面,一种用于执行软件程序的软件程序产品包括:非暂时性计算机可读存储介质;第一程序指令,用于:在软件程序的中间表示中标识调用块和目标块,其中,中间表示包括多个块,每个块与软件程序的多个执行块中的一个执行块相关联并且包括中间指令集,其中,调用块包括至少一个控制流中间指令以执行目标块的至少一个目标中间指令;第二程序指令,用于使用目标块生成目标可执行指令集;第三程序指令,用于当调用可执行指令集由多个处理单元中的调用处理单元执行并且目标可执行指令集由多个处理单元中的目标处理单元执行时,使用调用块并且使用用于唤起目标可执行指令集的至少一个计算机控制指令,来生成调用可执行指令集;第四程序指令,用于配置调用处理单元用于执行调用可执行指令集;以及第五程序指令,用于配置目标处理单元用于执行目标可执行指令集;其中,第一程序指令、第二程序指令、第三程序指令、第四程序指令和第五程序指令由至少一个计算机化处理器从非暂时性计算机可读存储介质执行。

7、参考第一方面和第二方面,在本发明的第一方面和第二方面的第一可能实施方式中,调用处理单元的第一计算机架构不同于目标处理单元的第二计算机架构。可选地,第一计算机架构和第二计算机架构中的至少一个选自由以下项构成的计算机架构群组:复杂指令集计算机(cisc)架构、精简指令集计算机(risc)架构、基于x86族的计算机架构、基于国际商业机器(ibm)power族的计算机架构和基于arm族的计算机架构。可选地,目标处理单元选自由以下项构成的处理单元群组:中央处理器、多核中央处理器(cpu)、数据处理单元(dpu)、微控制器单元(mcu)、加速处理单元(acu)、现场可编程门阵列(fpga)、粗粒度可重构架构(cgra)、神经网络加速器、智能处理单元(ipu)、专用集成电路(asic)、量子计算机和互连计算网格,其包括由多个可配置数据路由结点连接的多个可重构逻辑元件。可选地,调用可执行指令集包括多个转换指令,其实现应用到至少一个控制流中间指令的应用二进制接口,以在调用处理单元的第一计算机架构和目标处理单元的第二计算机架构之间进行转换。可选地,目标块包括多个目标元数据值,并且生成目标可执行指令集包括:根据目标处理单元的第二计算机架构,使用多个目标元数据值生成多个经转换的目标元数据值。在执行软件程序时,通过允许调用处理单元和目标处理单元中的至少一个比相应的其它处理单元便宜,并且附加地或替代地被设计成比相应的其它处理单元消耗更少的功率,使用具有不同于目标处理单元的另一计算机架构的计算机架构的调用处理单元有助于降低根据本公开实现的系统的实施成本,以及附加地或替代地降低操作成本,而不显著影响系统性能。实施应用于一个或多个控制流中间指令的应用二进制接口有助于由可执行指令集唤起目标可执行指令集,从而有助于将目标块委托给目标处理单元以便执行,从而在执行软件程序时提高系统的性能。根据目标处理单元的第二计算机架构,使用多个目标元数据值生成多个转换后的目标元数据值,便于目标处理单元执行目标可执行指令集,以及调用处理单元在公共执行上下文中执行调用可执行指令集,从而增加了标识目标块用于委托给目标处理单元以便执行的灵活性,提高了执行软件程序时系统的性能。

8、参考第一方面和第二方面,在本发明的第一方面和第二方面的第二可能实施方式中,目标处理单元还被配置为向调用处理单元提供由执行目标指令集的至少一部分的目标处理单元产生的至少一个值。可选地,调用处理单元还被配置为从调用处理单元接收由执行至少一些目标指令集的目标处理单元产生的至少一个值。可选地,调用处理单元还被配置为向目标处理单元提供至少一个自变量值。向调用处理单元提供由执行至少一些目标指令集的目标处理单元产生的一个或多个值,并且附加地或替代地,由调用处理单元向目标处理单元提供一个或多个自变量值有助于将目标块委托给目标处理单元以便执行,从而在执行软件程序时提高根据本公开实现的系统的性能。

9、参考第一方面和第二方面,在本发明的第一方面和第二方面的第三可能实施方式中,目标处理单元还被配置用于在执行目标指令集的至少一些其它指令之后,指示调用处理单元执行调用可执行指令集中的至少一些。可选地,调用处理单元还被配置用于:在执行用于唤起目标可执行指令集的至少一个计算机控制指令之后,暂停调用可执行指令集的执行;以及响应于从所述目标处理单元接收到指令而执行调用可执行指令集中的至少一些。由目标处理单元唤起执行调用可执行指令集的至少一部分有助于向目标处理单元提供对连接到目标处理单元的一个或多个计算资源的访问,从而增加了标识目标块用于委托给目标处理单元以便执行的灵活性,增加了当执行软件程序时系统的性能。

10、参考第一方面和第二方面,在本发明的第一方面和第二方面的第四可能实施方式中,调用可执行指令集包括对所标识的应用存储器地址范围内的至少一个存储器地址的至少一个第一存储器访问指令,并且目标可执行指令集包括对所标识的应用存储器地址范围内的至少一个其它存储器地址的至少一个第二存储器访问指令。可选地,所标识的应用存储器地址范围是以下之一:物理存储器地址范围、虚拟存储器地址范围、存储器映射的输入输出地址范围和总线地址范围。通过调用可执行指令集和目标可执行指令集两者来访问所标识的应用存储器地址范围增加了标识目标块用于委托给目标处理单元以便执行的灵活性,增加了当执行软件程序时系统的性能。

11、参考第一方面和第二方面,在本发明的第一方面和第二方面的第五可能实施方式中,调用可执行指令集包括使用与至少一个设备相关联的至少一个设备句柄来访问至少一个设备,并且目标可执行指令集包括使用至少一个设备句柄来访问至少一个设备。可选地,至少一个设备句柄是以下至少一项:网络套接字句柄、操作系统内核对象句柄和文件描述符。通过调用可执行指令集和目标可执行指令集两者来访问一个或多个设备增加了标识目标块用于委托给目标处理单元以便执行的灵活性,增加了系统的性能。

12、参考第一方面和第二方面,在本发明的第一方面和第二方面的第六可能实施方式中,至少一个硬件处理器还适于:在执行软件程序的至少一部分的同时收集多个统计值;以及根据多个统计值标识调用块和目标块。可选地,多个统计值中的至少一个表示以下之一:执行控制流指令的结果、软件程序的变量的数据值、存储器访问模式和存储器虚拟地址转变。可选地,至少一个硬件处理器还适于将多个遥测中间指令插入到软件程序的中间表示中,以便收集多个统计值。根据多个统计值标识调用块和目标块,提高了所述标识的准确性,从而提高了执行软件程序时系统的性能。

13、参考第一方面和第二方面,在本发明的第一方面和第二方面的第七可能实施方式中,调用处理单元是至少一个硬件处理器。使标识调用块和目标块的一个或多个硬件处理器执行调用可执行指令集,允许调用块和目标块的运行时标识,增加标识的准确性,从而在执行软件程序时增加系统的性能。

14、本公开的其它系统、方法、特征和优点对于本领域的技术人员在阅读以下附图和详细描述后将是明显的或变得明显。所有这样的附加系统、方法、特征和优点都包括在本说明书中、在本公开的范围内并由所附权利要求书保护。

15、除非另有定义,否则本文使用的所有技术和/或科学术语具有与实施例所属领域的普通技术人员通常理解的相同的含义。尽管与本文所述的方法和材料类似或等同的方法和材料可用于实施例的实践或测试,但下文描述了示例性方法和/或材料。在冲突的情况下,以专利说明书(包括定义)为准。此外,材料、方法和示例仅是说明性的,而不是必须进行限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1