当前位置: 首页 > 专利查询>奇跃公司专利>正文

用于跨指令集架构过程调用的线程编织制造技术

技术编号:27890533 阅读:21 留言:0更新日期:2021-03-31 02:12
本发明专利技术提供了一种启动代码的方法,包括:(i)存储具有第一、第二和第三函数的应用程序,第一函数是调用第二和第三函数以运行该应用程序的主函数;(ii)将应用程序编译到第一和第二异构处理器,以分别创建第一和第二中央处理单元(CPU)指令集架构(ISA)对象;(iii)通过从第一CPU ISA对象中移除第三函数并且从第二CPU ISA对象中移除第一和第二函数来修剪第一和第二CPU ISA对象;(iv)分别在第一和第二CPU ISA对象中代理插入第一和第二远程过程调用(RPC),并分别指向第二CPU ISA对象中的第三函数和第一CPU ISA对象中的第二函数;以及(v)对第二CPU ISA对象进行节重命名,以创建公共应用程序库。

【技术实现步骤摘要】
【国外来华专利技术】用于跨指令集架构过程调用的线程编织相关申请的交叉引用本申请要求于2018年7月10日提交的第62/696,132号美国临时专利申请的优先权,其全部内容通过引用整体合并于此。
本专利技术涉及启动代码的方法、执行应用程序的方法以及异构多处理器。
技术介绍
复杂的计算机系统经常利用异构方法,该方法涉及来自不同供应商的多个处理器核,每个处理器核都具有独特的指令集架构。生成用于异构多处理器的代码对于程序员可能是一项艰巨的任务。程序员本质上将必须处理分别与两个单独的二进制不兼容核兼容的过程调用,并处理可能在另一处理器可能更有效的边界处从一个线程转换到另一个线程的过程调用。这种复杂性使软件作者难以使用传统的高级计算机语言(诸如,高级C++线程原语和库)来关注功能的正确性。
技术实现思路
本专利技术提供一种启动代码的方法,该方法包括(i)将应用程序存储在存储器中,该应用程序具有第一、第二和第三函数,第一函数是调用第二和第三函数以运行应用程序的主函数;(ii)将应用程序编译到第一和第二异构处理器,以分别创建第一和第二中央处理单元(CPU)指令集架构(ISA)对象;(iii)通过从第一CPUISA对象中移除第三函数并且从第二CPUISA对象中移除第一和第二函数来修剪第一和第二CPUISA对象;(iv)分别在第一和第二CPUISA对象中代理插入第一和第二远程过程调用(RPC),并分别指向第二CPUISA对象中的第三函数和第一CPUISA对象中的第二函数;以及(v)对第二CPUISA对象进行节(section)重命名,以创建第一和第二CPUISA对象的公共应用程序库。本专利技术还提供一种计算机可读介质,其上存储有一组指令,该组指令可以由处理器执行以执行一种方法。该方法可以包括:(i)将应用程序存储在存储器中,该应用程序具有第一、第二和第三函数,第一函数是调用第二和第三函数以运行第一应用程序的主函数;(ii)将应用程序编译到第一和第二异构处理器,以分别创建第一和第二中央处理单元(CPU)指令集架构(ISA)对象;(iii)通过从第一CPUISA对象中移除第三函数并且从第二CPUISA对象中移除第一和第二函数来修剪第一和第二CPUISA对象;(iv)分别在第一和第二CPUISA对象中代理插入第一和第二远程过程调用(RPC),并分别指向第二CPUISA对象中的第三函数和第一CPUISA对象中的第二函数;以及(v)对第二CPUISA对象进行节重命名,以创建第一和第二CPUISA对象的公共应用程序库。本专利技术进一步提供一种执行应用程序的方法,该方法包括:(1)用被编译到第一处理器的第一中央处理器(CPU)指令集架构(ISA)对象中的至少一个第一CPUISA对象在第一处理器上执行具有第一、第二和第三函数的应用程序的第一函数,第一函数是主函数,该主函数导致以下的顺序执行:(2)用第一CPUISA对象中的至少一个第一CPUISA对象在第一处理器上执行第一远程过程调用(RPC);(3)用被编译到第二处理器的第二CPUISA对象中的至少一个第二CPUISA对象在第二处理器上执行第三函数;(4)用第二CPUISA对象中的至少一个第二CPUISA对象在第二处理器上执行第二RPC;以及(5)用第一CPUISA对象中的至少一个第一CPUISA对象在第一处理器上执行第二函数。本专利技术还提供一种异构多处理器,其包括:第一和第二异构处理器、存储器以及该存储器上的应用程序,该应用程序包括第一、第二和第三函数、以及第一和第二远程过程调用(RPC),其中,(1)第一函数是用被编译到第一处理器的第一中央处理器(CPU)指令集架构(ISA)对象中的至少一个第一CPUISA对象在第一处理器上执行的主函数。主函数导致以下的顺序执行:(2)用第一CPUISA对象中的至少一个第一CPUISA对象在第一处理器上执行第一RPC;(3)用被编译到第二处理器的第二CPUISA对象中的至少一个第二CPUISA对象在第二处理器上执行第三函数;(4)用第二CPUISA对象中的至少一个第二CPUISA对象在第二处理器上执行第二RPC;以及(5)用第一CPUISA对象中的至少一个第一CPUISA对象在第一处理器上执行第二函数。附图说明参考附图,通过示例进一步描述本专利技术,在附图中:图1是示出概念性异构多处理器应用程序的框图;图2至图6是示出异构多处理器应用程序的开发的框图;图7至图11示出异构多处理器的运行时执行;以及图12是可以托管用于部署异构多处理器应用程序的构建系统的计算机的形式的机器的框图。具体实施方式图1示出概念上的异构多处理器应用程序10,其包括在主指令集架构(ISA)上运行的代码12、在辅助ISA上运行的代码14和公共数据16。代码14包括第一函数18和第二函数20。第一函数18是主函数,主函数是被执行以运行异构多处理器应用程序10的第一函数。代码14包括第三函数22。公共数据16包括数据结构24。第一函数18在26处指向第二函数20,并且在28处指向第三函数22。第三函数22在30处指向第二函数20。第一函数18和第三函数22分别在32和34处依赖于数据结构24。将理解,应用程序可具有三个以上的函数。为了讨论的目的,描述了仅具有三个函数的异构多处理器的结构,这足以描述本专利技术,并且不包括可能使本专利技术难以理解的不必要的混乱。然而,可以在本说明书中使用的三个函数之前、之间和/或之后包括附加函数,并且附加函数可以经由相同的方法调用属于任何ISA的系统中的任何其它函数。图2示出根据本专利技术的实施例的用于创建异构多处理器应用程序40的第一操作。应用程序用源代码编写并存储在存储器中。然后,将应用程序编译到第一异构处理器和第二异构处理器,以分别创建第一中央处理单元(CPU)ISA对象42A和第二CPUISA对象42B。处理器具有不同的ISA,并且因此依赖于功能不同的对象。因此,根据不同处理器的ISA的不同要求,CPUISA对象42A和42B彼此是不同的。CPUISA对象42A和42B是从相同的源代码编译的,并且因此具有相同的功能块。例如,CPUISA对象42A包括第一函数18A,并且CPUISA对象42B也包括第一函数18B。CPUISA对象42A和42B的功能组件与参考图1描述的概念性异构多处理器应用程序10的功能组件相同。第一CPUISA对象42A的组件以及各组件之间的链接具有与图1中的概念性异构多处理器应用程序10的组件相同的附图标记,区别在于第一CPUISA对象42A及其链接上附加了“A”(例如,“20”变为“20A”)。类似地,第二CPUISA对象42B的组件与图1中的异构多处理器应用程序10的组件相同,区别在于它们被附加了“B”(例如,“20”变为“20B”)。图3示出为构建异构多处理器应用程序40而执行的修剪操作。在第一CPUISA对象42A中,删除了代码14A和第三函数22A。对第三函数22A的移除也移除了到数据结构24A的链接34A。在第二CPUISA对象42B中,移除在第本文档来自技高网...

【技术保护点】
1.一种启动代码的方法,包括:/n(i)将应用程序存储在存储器中,所述应用程序具有第一函数、第二函数和第三函数,所述第一函数是调用所述第二函数和所述第三函数以运行所述应用程序的主函数;/n(ii)将所述应用程序编译到第一异构处理器和第二异构处理器,以分别创建第一中央处理单元CPU指令集架构ISA对象和第二CPU ISA对象;/n(iii)通过从所述第一CPU ISA对象中移除所述第三函数并且从所述第二CPU ISA对象中移除第一函数和第二函数来修剪所述第一CPU ISA对象和所述第二CPU ISA对象;/n(iv)分别在所述第一CPU ISA对象和所述第二CPU ISA对象中代理插入第一远程过程调用RPC和第二远程过程调用RPC,并分别指向所述第二CPU ISA对象中的所述第三函数和所述第一CPU ISA对象中的所述第二函数;以及/n(v)对所述第二CPU ISA对象进行节重命名,以创建所述第一CPU ISA对象和所述第二CPU ISA对象的公共应用程序库。/n

【技术特征摘要】
【国外来华专利技术】20180710 US 62/696,1321.一种启动代码的方法,包括:
(i)将应用程序存储在存储器中,所述应用程序具有第一函数、第二函数和第三函数,所述第一函数是调用所述第二函数和所述第三函数以运行所述应用程序的主函数;
(ii)将所述应用程序编译到第一异构处理器和第二异构处理器,以分别创建第一中央处理单元CPU指令集架构ISA对象和第二CPUISA对象;
(iii)通过从所述第一CPUISA对象中移除所述第三函数并且从所述第二CPUISA对象中移除第一函数和第二函数来修剪所述第一CPUISA对象和所述第二CPUISA对象;
(iv)分别在所述第一CPUISA对象和所述第二CPUISA对象中代理插入第一远程过程调用RPC和第二远程过程调用RPC,并分别指向所述第二CPUISA对象中的所述第三函数和所述第一CPUISA对象中的所述第二函数;以及
(v)对所述第二CPUISA对象进行节重命名,以创建所述第一CPUISA对象和所述第二CPUISA对象的公共应用程序库。


2.根据权利要求1所述的方法,其中,所述第一函数指向所述第二函数。


3.根据权利要求1所述的方法,其中,所述第一函数指向所述第一RPC。


4.根据权利要求1所述的方法,进一步包括:
将所述第一CPUISA对象中的所述第三函数和所述第二CPUISA对象中的所述第二函数分别替换为所述第一RPC和所述第二RPC。


5.根据权利要求1所述的方法,其中,所述应用程序具有被所述第一CPUISA对象和所述第二CPUISA对象的函数使用的数据结构。


6.根据权利要求5所述的方法,其中,在所述编译(ii)期间,所述数据结构被编译到所述第二处理器。


7.根据权利要求6所述的方法,其中,在所述修剪(iii)期间,所述数据结构从所述第二CPUISA对象中移除。


8.根据权利要求5所述的方法,其中,所述第一函数使用所述数据结构。


9.根据权利要求5所述的方法,其中,所述第三函数使用所述数据结构。


10.根据权利要求9所述的方法,其中,所述第二CPUISA对象中的所述第三函数指向所述第一CPUISA对象中的所述数据结构。


11.根据权利要求4所述的方法,进一步包括:
(1)用所述第一CPUISA对象中的至少一个第一CPUISA对象在所述第一处理器上执行所述主函数,所述主函数导致以下的顺序执行:
(2)用所述第一CPUISA对象中的至少一个第一CPUISA对象在所述第一处理器上执行所述第一RPC;
(3)用所述第二CPUISA对象中的至少一个第二CPUISA对象在所述第二处理器上执行所述第三函数;
(4)用所述第二CPUISA对象中的至少一个第二CPUISA对象在所述第二处理器上执行所述第二RPC;以及
(5)用所述第一CPUISA对象中的至少一个...

【专利技术属性】
技术研发人员:J·L·塔特G·M·林克
申请(专利权)人:奇跃公司
类型:发明
国别省市:美国;US

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

1