CN112585581A - 用于跨指令集架构过程调用的线程编织 - Google Patents

用于跨指令集架构过程调用的线程编织 Download PDF

Info

Publication number
CN112585581A
CN112585581A CN201980053016.XA CN201980053016A CN112585581A CN 112585581 A CN112585581 A CN 112585581A CN 201980053016 A CN201980053016 A CN 201980053016A CN 112585581 A CN112585581 A CN 112585581A
Authority
CN
China
Prior art keywords
function
cpu
isa
processor
cpu isa
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201980053016.XA
Other languages
English (en)
Inventor
J·L·塔特
G·M·林克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Magic Leap Inc
Original Assignee
Magic Leap Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Magic Leap Inc filed Critical Magic Leap Inc
Publication of CN112585581A publication Critical patent/CN112585581A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system

Abstract

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

Description

用于跨指令集架构过程调用的线程编织
相关申请的交叉引用
本申请要求于2018年7月10日提交的第62/696,132号美国临时专利申请的优先权,其全部内容通过引用整体合并于此。
技术领域
本发明涉及启动代码的方法、执行应用程序的方法以及异构多处理器。
背景技术
复杂的计算机系统经常利用异构方法,该方法涉及来自不同供应商的多个处理器核,每个处理器核都具有独特的指令集架构。生成用于异构多处理器的代码对于程序员可能是一项艰巨的任务。程序员本质上将必须处理分别与两个单独的二进制不兼容核兼容的过程调用,并处理可能在另一处理器可能更有效的边界处从一个线程转换到另一个线程的过程调用。这种复杂性使软件作者难以使用传统的高级计算机语言(诸如,高级C++线程原语和库)来关注功能的正确性。
发明内容
本发明提供一种启动代码的方法,该方法包括(i)将应用程序存储在存储器中,该应用程序具有第一、第二和第三函数,第一函数是调用第二和第三函数以运行应用程序的主函数;(ii)将应用程序编译到第一和第二异构处理器,以分别创建第一和第二中央处理单元(CPU)指令集架构(ISA)对象;(iii)通过从第一CPU ISA对象中移除第三函数并且从第二CPU ISA对象中移除第一和第二函数来修剪第一和第二CPU ISA对象;(iv)分别在第一和第二CPU ISA对象中代理插入第一和第二远程过程调用(RPC),并分别指向第二CPU ISA对象中的第三函数和第一CPU ISA对象中的第二函数;以及(v)对第二CPU ISA对象进行节(section)重命名,以创建第一和第二CPU ISA对象的公共应用程序库。
本发明还提供一种计算机可读介质,其上存储有一组指令,该组指令可以由处理器执行以执行一种方法。该方法可以包括:(i)将应用程序存储在存储器中,该应用程序具有第一、第二和第三函数,第一函数是调用第二和第三函数以运行第一应用程序的主函数;(ii)将应用程序编译到第一和第二异构处理器,以分别创建第一和第二中央处理单元(CPU)指令集架构(ISA)对象;(iii)通过从第一CPU ISA对象中移除第三函数并且从第二CPU ISA对象中移除第一和第二函数来修剪第一和第二CPU ISA对象;(iv)分别在第一和第二CPU ISA对象中代理插入第一和第二远程过程调用(RPC),并分别指向第二CPU ISA对象中的第三函数和第一CPU ISA对象中的第二函数;以及(v)对第二CPU ISA对象进行节重命名,以创建第一和第二CPU ISA对象的公共应用程序库。
本发明进一步提供一种执行应用程序的方法,该方法包括:(1)用被编译到第一处理器的第一中央处理器(CPU)指令集架构(ISA)对象中的至少一个第一CPU ISA对象在第一处理器上执行具有第一、第二和第三函数的应用程序的第一函数,第一函数是主函数,该主函数导致以下的顺序执行:(2)用第一CPU ISA对象中的至少一个第一CPU ISA对象在第一处理器上执行第一远程过程调用(RPC);(3)用被编译到第二处理器的第二CPU ISA对象中的至少一个第二CPU ISA对象在第二处理器上执行第三函数;(4)用第二CPU ISA对象中的至少一个第二CPU ISA对象在第二处理器上执行第二RPC;以及(5)用第一CPU ISA对象中的至少一个第一CPU ISA对象在第一处理器上执行第二函数。
本发明还提供一种异构多处理器,其包括:第一和第二异构处理器、存储器以及该存储器上的应用程序,该应用程序包括第一、第二和第三函数、以及第一和第二远程过程调用(RPC),其中,(1)第一函数是用被编译到第一处理器的第一中央处理器(CPU)指令集架构(ISA)对象中的至少一个第一CPU ISA对象在第一处理器上执行的主函数。主函数导致以下的顺序执行:(2)用第一CPU ISA对象中的至少一个第一CPU ISA对象在第一处理器上执行第一RPC;(3)用被编译到第二处理器的第二CPU ISA对象中的至少一个第二CPU ISA对象在第二处理器上执行第三函数;(4)用第二CPU ISA对象中的至少一个第二CPU ISA对象在第二处理器上执行第二RPC;以及(5)用第一CPU ISA对象中的至少一个第一CPU ISA对象在第一处理器上执行第二函数。
附图说明
参考附图,通过示例进一步描述本发明,在附图中:
图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和第二CPU ISA对象42B。处理器具有不同的ISA,并且因此依赖于功能不同的对象。因此,根据不同处理器的ISA的不同要求,CPU ISA对象42A和42B彼此是不同的。CPU ISA对象42A和42B是从相同的源代码编译的,并且因此具有相同的功能块。例如,CPU ISA对象42A包括第一函数18A,并且CPU ISA对象42B也包括第一函数18B。CPU ISA对象42A和42B的功能组件与参考图1描述的概念性异构多处理器应用程序10的功能组件相同。第一CPU ISA对象42A的组件以及各组件之间的链接具有与图1中的概念性异构多处理器应用程序10的组件相同的附图标记,区别在于第一CPUISA对象42A及其链接上附加了“A”(例如,“20”变为“20A”)。类似地,第二CPU ISA对象42B的组件与图1中的异构多处理器应用程序10的组件相同,区别在于它们被附加了“B”(例如,“20”变为“20B”)。
图3示出为构建异构多处理器应用程序40而执行的修剪操作。在第一CPU ISA对象42A中,删除了代码14A和第三函数22A。对第三函数22A的移除也移除了到数据结构24A的链接34A。在第二CPU ISA对象42B中,移除在第二ISA上运行的代码12B、以及第一函数18B和第二函数20B。公共数据16B和数据结构24B也从第二CPU ISA对象42B中移除。从第二CPU ISA对象42B中移除组件也切断了26B、28B和32B处的链接。在主ISA上运行的代码12A具有“.text”命名结构,被称为“链接器输入节”、“.text节”或“目标文件节”。在辅助ISA上运行的代码14B具有“.text.isab”命名结构。
图4示出在异构多处理器应用程序40的构造中执行的代理插入操作。第一代理节46和第二代理节48分别插入到第一CPU ISA对象42A和第二CPU ISA对象42B中。第一代理节46包括第一远程过程调用(RPC)50。第一函数18A指向第一RPC 50。第一RPC 50在52处指向第二CPU ISA对象42B的第三函数22B。实际上,可以将图2中的第三函数22A替换为图4中的第一RPC 50。
第二代理节48包括第二远程过程调用(RPC)54。第三函数22B在30B处指向第二RPC54。在图4中,第二RPC 54在56处指向第二函数20A。第二代理节48此时尚未被重命名,并且因此链接56是非活动的。然而,链接56被包括在图4中以示出在第二代理节48被重命名之后异构多处理器应用程序40的最终功能。类似地,链接34B被示为指向数据结构24A,以示出在要在辅助ISA上运行的代码14B被重命名之后异构多处理器应用程序40的最终功能。
图5示出为构造异构多处理器应用程序40而执行的节重命名操作。将在辅助ISA和第二代理节48上运行的代码14B从“.text.isab”重命名为“.text”,以与第一CPU ISA对象42A的命名一致。图6示出在图5中的节重命名之后应用程序库中的最终链接。节重命名创建通用的“.text”节60,“.text”节60包含第一函数18A、第二函数20A、第三函数22B、第一RPC50和第二RPC 54。
例如,源代码可以用C++代码编写,此后,由图2中的第一函数18A、第二函数20A和第三函数24A表示的处理线程在被称为“编织”事件中在被称为边界的过程处从一个二进制不兼容核无形地转换到另一个二进制不兼容核。软件作者可以首先使用传统的高级C++线程原语和库专注于功能的正确性,并且然后可以以模块化的方式将各个代码块迁移到更高效的处理器,而不必重写代码或依靠不同的库集。系统例如可以具有数字信号处理器(DSP)和通用中央处理单元(CPU)。从软件作者的角度来看,要在DSP上运行函数,所有需要做的是将属性标签添加到函数中,以指定将其放置在特定的非“.text”程序节中,如下:
Figure BDA0002940489360000051
Figure BDA0002940489360000061
在以上示例中,在编译源文件之后,所产生的目标文件将在“.text_dsp”节中包含函数“foo”。构建系统识别并从目标文件中剥离“.text_dsp”节,然后重新编译DSP的ISA的源文件。任何对“foo”函数的引用均将被替换为shim函数,以在DSP上发起远程过程调用。以类似的方式,DSP目标文件将发生相反的情况:.text中的任何函数都将被剥离,并且.text_dsp节中对该函数的任何引用都将被shim函数替换,以发起远程过程调用回CPU。只要两个处理器具有相同的编译结构布局、具有对同一虚拟存储器的相同的视图、以及具有在发生编织事件时的一致的缓存,则应用程序应当能够从一种处理器架构无缝过渡到另一种处理器架构,同时保持程序员对执行流的简单而一致的视角。
图7示出在运行时执行期间执行的第一操作。异构多处理器70具有主存储器72,主存储器72存储图6的异构多处理器应用程序40的组件。第一函数18A是被执行以运行该应用程序的主函数。框74指示使用第一CPU ISA对象在第一处理器上执行第一函数18A。框76指示使用第二CPU ISA对象的第二处理器是空闲的。第一函数18A在32A处依赖于数据结构24A,例如,出于查找数据的目的。第一函数18A在26A和26B处执行第二函数20A和第一RPC50。
图8示出在第一函数18A启动第一RPC 50时在异构多处理器70上执行的第二处理。框78指示使用第一ISA对象在第一CPU上执行第一RPC 50。框78指示第二CPU仍然空闲。第一RPC 50在52处执行第三函数22B。
图9示出在第一RPC 50执行第三函数22B时在异构多处理器70上执行的第三操作。框80指示使用第一ISA对象的第一CPU被暂停。框82指示使用第二ISA对象用第二CPU执行第三函数22B。第三函数22B在34B处利用数据结构24A,例如为了执行查找的目的。第三函数22B在30B处执行第二RPC 54。
图10示出在第二RPC 54被执行时在异构多处理器70上执行的第四操作。框80指示第一CPU仍被暂停。框84指示使用第二ISA对象用第二CPU执行第二RPC 54。第二RPC 54在56处执行第二函数20A。
图11示出在第二函数20A被执行时在异构多处理器70上执行的第五操作。框86指示使用第一ISA对象用第一CPU执行第一函数20A。框88指示第二CPU被暂停。
图12示出计算机系统900的示例性形式的机器的示意图,在计算机系统900内可以执行一组指令,该组指令用于使机器执行本文所讨论的方法中的任何一种或多种方法。在替代实施例中,该机器作为独立设备操作,或者可以连接(例如,联网)到其它机器。此外,虽然仅示出了单个机器,但是术语“机器”也应被理解为包括任何机器的集合,其单独地或共同地执行一组(或多组)指令以执行本文讨论的任何一种或多种方法。
示例性计算机系统900包括处理器902(例如,中央处理单元(CPU)、图形处理单元(GPU)、或二者)、主存储器904(例如,只读存储器(ROM)、闪存、诸如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)的动态随机存取存储器(DRAM)等),以及静态存储器906(例如,闪存、静态随机存取存储器(SRAM)等),它们经由总线908彼此通信。
计算机系统900可进一步包括磁盘驱动单元916和网络接口设备920。
磁盘驱动单元916包括机器可读介质922,其上存储体现本文所述的方法或功能中的任何一个或多个的一组或多组指令924(例如,软件)。软件还可以在由计算机系统900执行期间全部或至少部分地驻留在主存储器904内和/或处理器902内,主存储器904和处理器902也构成机器可读介质。
软件可以进一步经由网络接口设备920在网络928上发送或接收。
尽管在示例性实施例中将机器可读介质922示出为单个介质,但是术语“机器可读介质”应被认为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库,和/或关联的缓存和服务器)。术语“机器可读介质”也应被认为包括能够存储、编码或承载一组指令以供机器执行以及使机器执行本发明的任何一种或多种方法的任何介质。因此,术语“机器可读介质”应被认为包括但不限于固态存储器、光学和磁性介质、以及载波信号。
尽管已经描述并在附图中示出了某些示例性实施例,但是可以理解,这些实施例仅是示例性的而并不限制本发明,并且由于本领域的普通技术人员可以进行修改,本发明不限于所示和所描述的特定构造和布置。

Claims (14)

1.一种启动代码的方法,包括:
(i)将应用程序存储在存储器中,所述应用程序具有第一函数、第二函数和第三函数,所述第一函数是调用所述第二函数和所述第三函数以运行所述应用程序的主函数;
(ii)将所述应用程序编译到第一异构处理器和第二异构处理器,以分别创建第一中央处理单元CPU指令集架构ISA对象和第二CPU ISA对象;
(iii)通过从所述第一CPU ISA对象中移除所述第三函数并且从所述第二CPU ISA对象中移除第一函数和第二函数来修剪所述第一CPU ISA对象和所述第二CPU ISA对象;
(iv)分别在所述第一CPU ISA对象和所述第二CPU ISA对象中代理插入第一远程过程调用RPC和第二远程过程调用RPC,并分别指向所述第二CPU ISA对象中的所述第三函数和所述第一CPU ISA对象中的所述第二函数;以及
(v)对所述第二CPU ISA对象进行节重命名,以创建所述第一CPU ISA对象和所述第二CPU ISA对象的公共应用程序库。
2.根据权利要求1所述的方法,其中,所述第一函数指向所述第二函数。
3.根据权利要求1所述的方法,其中,所述第一函数指向所述第一RPC。
4.根据权利要求1所述的方法,进一步包括:
将所述第一CPU ISA对象中的所述第三函数和所述第二CPU ISA对象中的所述第二函数分别替换为所述第一RPC和所述第二RPC。
5.根据权利要求1所述的方法,其中,所述应用程序具有被所述第一CPU ISA对象和所述第二CPU ISA对象的函数使用的数据结构。
6.根据权利要求5所述的方法,其中,在所述编译(ii)期间,所述数据结构被编译到所述第二处理器。
7.根据权利要求6所述的方法,其中,在所述修剪(iii)期间,所述数据结构从所述第二CPU ISA对象中移除。
8.根据权利要求5所述的方法,其中,所述第一函数使用所述数据结构。
9.根据权利要求5所述的方法,其中,所述第三函数使用所述数据结构。
10.根据权利要求9所述的方法,其中,所述第二CPU ISA对象中的所述第三函数指向所述第一CPU ISA对象中的所述数据结构。
11.根据权利要求4所述的方法,进一步包括:
(1)用所述第一CPU ISA对象中的至少一个第一CPU ISA对象在所述第一处理器上执行所述主函数,所述主函数导致以下的顺序执行:
(2)用所述第一CPU ISA对象中的至少一个第一CPU ISA对象在所述第一处理器上执行所述第一RPC;
(3)用所述第二CPU ISA对象中的至少一个第二CPU ISA对象在所述第二处理器上执行所述第三函数;
(4)用所述第二CPU ISA对象中的至少一个第二CPU ISA对象在所述第二处理器上执行所述第二RPC;以及
(5)用所述第一CPU ISA对象中的至少一个第一CPU ISA对象在所述第一处理器上执行所述第二函数。
12.一种计算机可读介质,其上存储有一组指令,所述指令可由处理器执行以执行方法,所述方法包括:
(i)将应用程序存储在存储器中,所述应用程序具有第一函数、第二函数和第三函数,所述第一函数是调用所述第二函数和所述第三函数以运行所述第一应用程序的主函数;
(ii)将所述应用程序编译到第一异构处理器和第二异构处理器,以分别创建第一中央处理单元CPU指令集架构ISA对象和第二CPU ISA对象;
(iii)通过从所述第一CPU ISA对象中移除所述第三函数并且从所述第二CPU ISA对象中移除第一函数和所述第二函数来修剪所述第一CPU ISA对象和所述第二CPU ISA对象;
(iv)分别在所述第一CPU ISA对象和所述第二CPU ISA对象中代理插入第一远程过程调用RPC和第二远程过程调用RPC,并分别指向所述第二CPU ISA对象中的所述第三函数和所述第一CPU ISA对象中的所述第二函数;以及
(v)对所述第二CPU ISA对象进行节重命名,以创建所述第一CPU ISA对象和所述第二CPU ISA对象的公共应用程序库。
13.一种执行应用程序的方法,包括:
(1)用被编译到所述第一处理器的第一中央处理器CPU指令集架构ISA对象中的至少一个第一CPU ISA对象在第一处理器上执行具有第一函数、第二函数和第三函数的应用程序的第一函数,所述第一函数是主函数,所述主函数导致以下的顺序执行:
(2)用所述第一CPU ISA对象中的至少一个第一CPU ISA对象在所述第一处理器上执行第一远程过程调用RPC;
(3)用被编译到所述第二处理器的第二CPU ISA对象中的至少一个第二CPU ISA对象在第二处理器上执行所述第三函数;
(4)用所述第二CPU ISA对象中的至少一个第二CPU ISA对象在所述第二处理器上执行所述第二RPC;以及
(5)用所述第一CPU ISA对象中的至少一个第一CPU ISA对象在所述第一处理器上执行所述第二函数。
14.一种异构多处理器,包括:
第一异构处理器和第二异构处理器;
存储器;以及
所述存储器上的应用程序,其包括:
第一函数、第二函数、第三函数、第一远程过程调用RPC和第二RPC,其中,
(1)所述第一函数是用被编译到所述第一处理器的第一中央处理器CPU指令集架构ISA对象中的至少一个第一CPU ISA对象在所述第一处理器上执行的主函数,所述主函数导致以下的顺序执行:
(2)用所述第一CPU ISA对象中的至少一个第一CPU ISA对象在所述第一处理器上执行所述第一RPC;
(3)用被编译到所述第二处理器的第二CPU ISA对象中的至少一个第二CPU ISA对象在第二处理器上执行所述第三函数;
(4)用所述第二CPU ISA对象中的至少一个第二CPU ISA对象在所述第二处理器上执行所述第二RPC;以及
(5)用所述第一CPU ISA对象中的至少一个第一CPU ISA对象在所述第一处理器上执行所述第二函数。
CN201980053016.XA 2018-07-10 2019-07-10 用于跨指令集架构过程调用的线程编织 Pending CN112585581A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862696132P 2018-07-10 2018-07-10
US62/696,132 2018-07-10
PCT/US2019/041151 WO2020014324A1 (en) 2018-07-10 2019-07-10 Thread weave for cross-instruction set architecture procedure calls

Publications (1)

Publication Number Publication Date
CN112585581A true CN112585581A (zh) 2021-03-30

Family

ID=69142713

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980053016.XA Pending CN112585581A (zh) 2018-07-10 2019-07-10 用于跨指令集架构过程调用的线程编织

Country Status (5)

Country Link
US (1) US20210271484A1 (zh)
EP (1) EP3821340A4 (zh)
JP (2) JP7374981B2 (zh)
CN (1) CN112585581A (zh)
WO (1) WO2020014324A1 (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102741828A (zh) * 2009-10-30 2012-10-17 英特尔公司 对计算机平台的异构处理器的双向通信支持
US20150301955A1 (en) * 2014-04-21 2015-10-22 Qualcomm Incorporated Extending protection domains to co-processors
US20170123775A1 (en) * 2014-03-26 2017-05-04 Empire Technology Development Llc Compilation of application into multiple instruction sets for a heterogeneous processor
CN107077337A (zh) * 2014-12-09 2017-08-18 英特尔公司 用于执行根据两个指令集架构编译的应用编码的系统和方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2061117C (en) * 1991-12-02 1998-09-29 Neta J. Amit Apparatus and method for distributed program stack
US5497463A (en) * 1992-09-25 1996-03-05 Bull Hn Information Systems Inc. Ally mechanism for interconnecting non-distributed computing environment (DCE) and DCE systems to operate in a network system
JP2000099332A (ja) * 1998-09-25 2000-04-07 Hitachi Ltd 遠隔手続き呼び出し最適化方法とこれを用いたプログラム実行方法
US20100153934A1 (en) * 2008-12-12 2010-06-17 Peter Lachner Prefetch for systems with heterogeneous architectures
WO2014031540A1 (en) * 2012-08-20 2014-02-27 Cameron Donald Kevin Processing resource allocation
US10437591B2 (en) * 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
US20140359590A1 (en) * 2013-05-30 2014-12-04 National Instruments Corporation Development and Deployment of Parallel Floating-Point Math Functionality on a System with Heterogeneous Hardware Components
US20180260218A1 (en) * 2017-03-07 2018-09-13 Vinodh Gopal Instruction set architectures for fine-grained heterogeneous processing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102741828A (zh) * 2009-10-30 2012-10-17 英特尔公司 对计算机平台的异构处理器的双向通信支持
US20170123775A1 (en) * 2014-03-26 2017-05-04 Empire Technology Development Llc Compilation of application into multiple instruction sets for a heterogeneous processor
US20150301955A1 (en) * 2014-04-21 2015-10-22 Qualcomm Incorporated Extending protection domains to co-processors
CN107077337A (zh) * 2014-12-09 2017-08-18 英特尔公司 用于执行根据两个指令集架构编译的应用编码的系统和方法

Also Published As

Publication number Publication date
EP3821340A1 (en) 2021-05-19
JP2024010097A (ja) 2024-01-23
JP2021532456A (ja) 2021-11-25
JP7374981B2 (ja) 2023-11-07
EP3821340A4 (en) 2021-11-24
WO2020014324A1 (en) 2020-01-16
US20210271484A1 (en) 2021-09-02

Similar Documents

Publication Publication Date Title
JP4999183B2 (ja) 並列スレッド・コンピューティングの仮想のアーキテクチャ及び命令セット
CN111831287B (zh) 用于确定执行代码段所需的资源的方法、设备和程序产品
KR101240092B1 (ko) 컴퓨터 플랫폼에서의 방법 및 컴퓨터 플랫폼
JPH06266683A (ja) 並列処理装置
JP2008276740A5 (zh)
EP3198452B1 (en) On-demand loading of dynamic scripting language code for reduced memory usage
US10853049B2 (en) Methods for enabling a computer to migrate microservices and to perform microservice templating
WO2013192104A2 (en) Optimized execution of dynamic languages
US10248409B1 (en) Limiting the effects of source code patches on corresponding native-code patches
US10761821B1 (en) Object oriented programming model for graphics processing units (GPUS)
US9665354B2 (en) Apparatus and method for translating multithread program code
CN112487092A (zh) 一种基于区块链的智能合约调用方法及装置
CN114546581A (zh) 一种无服务容器启动方法及相关设备
US20160147559A1 (en) Modification of context saving functions
CN112585581A (zh) 用于跨指令集架构过程调用的线程编织
DE102023101520A1 (de) Effizientes Starten von Aufgaben auf einem Prozessor
CN110569105A (zh) 分布式虚拟机自适应内存一致性协议及其设计方法、终端
RU2554509C2 (ru) Система и способ распределенных вычислений
US9898268B2 (en) Enhanced local commoning
US11327758B2 (en) Non-transitory computer-readable recording medium, assembly instruction conversion method and information processing apparatus
WO2007144891A1 (en) A method for the distribution of software processes to a plurality of computers
US20220391216A1 (en) Graphics processing
Capitanio et al. Toward register allocation for multiple register file vliw architectures
Ejarque et al. Simplifying Parallel Programming and Execution for Distributed Heterogeneous Computing Platforms
CN114385242A (zh) 一种mips架构汇编指令接管的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination