CN1499362A - 在异构体系结构的集成可执行程序中用多个代码访问全局变量的系统和装置 - Google Patents

在异构体系结构的集成可执行程序中用多个代码访问全局变量的系统和装置 Download PDF

Info

Publication number
CN1499362A
CN1499362A CNA2003101010784A CN200310101078A CN1499362A CN 1499362 A CN1499362 A CN 1499362A CN A2003101010784 A CNA2003101010784 A CN A2003101010784A CN 200310101078 A CN200310101078 A CN 200310101078A CN 1499362 A CN1499362 A CN 1499362A
Authority
CN
China
Prior art keywords
global
data
local storage
mark
global data
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.)
Granted
Application number
CNA2003101010784A
Other languages
English (en)
Other versions
CN1292342C (zh
Inventor
迈克尔・K・克施温德
迈克尔·K·克施温德
・M.・奥布莱恩
凯瑟琳·M.·奥布莱恩
K.・奥布莱恩
约翰·K.·奥布莱恩
纳・萨拉普罗
瓦伦蒂纳·萨拉普罗
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1499362A publication Critical patent/CN1499362A/zh
Application granted granted Critical
Publication of CN1292342C publication Critical patent/CN1292342C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

在本发明中,全局信息从第一执行环境传送到第二执行环境,其中第一和第二处理器单元包括独立的存储器。全局变量通过由一个存根函数调用存储器流控制器来传送。全局描述符具有多个字段标记,允许绑定器链接绑定到第一和第二执行环境的独立的对象文件。

Description

在异构体系结构的集成可执行程序 中用多个代码访问全局变量的系统和装置
技术领域
本发明一般涉及多处理,具体而言,本发明涉及在多个处理器之间链接全局变量。
背景技术
在计算机技术中,并行处理非常重要。并行处理通常包括使用多个连接到同一系统的微处理器,用来并发处理一批数据。并行处理一般主要包括三种。这些并行处理系统使用共享存储器或分布式存储器或二者的组合。一般情况下,共享存储器是可以由多个处理器以单个操作,如“加载”或“读”命令来访问的存储器。分布式存储器是被本地化成单个处理器的存储器。换句话说,每个处理器都可以在单个的访问操作中访问与其本身相关联的存储器,但无法在单个操作中访问与其他处理器相关联的存储器。最后,还有一种混合或“异构”的并行处理,其中既有共享存储器又有分布存储器。
典型的这样一种混合并行处理器系统包括一个精减指令集(RISC)主处理器单元(MPU),如PowerPCTM处理器,和一个专用或“附加”处理器(APU),如SynergisticTM APU(SPU)。一般而言,使用MPU来执行通用代码,其中通用代码包括复杂控制流并协调总体的混合并行处理功能。MPU能够访问所有的系统存储器。虽然在一个实施例中只使用了一个MPU,在其他的实施例中,则使用了多个MPU。APU通常用来执行数据流操作。也就是说,APU计算高度重复的多媒体、图形、信号或网络处理工作量,这些工作量的特点是具有高的计算与控制决策比例。在常规的混合系统中,APU无法访问系统存储器,并且其本身的存储器,即局部存储器,通常比共享存储器小。
一般情况下,使用混合系统虽然提供了高的计算性能,但对编程模型提出了重大的挑战。这类问题与APU相关。APU无法直接寻址系统存储器。因此,要在APU上运行的代码必须先传送到与APU相关联的局部存储器,然后才能在APU上执行此代码。此外,APU和MPU还可以具有不同的指令集。
在处理系统中,如混合处理系统中,需要在程序的不同部分(例如,子程序或函数)之间传送数据。如果这些子程序被设计成在处理器上直接访问系统存储器执行,或被设计成完全在异构计算机系统内的单个处理器上执行,则可以使用由绑定器或链接程序功能解析全局数据地址的常规方法。正如本领域普通技术人员所理解的那样,全局数据通常被定义为由多个子程序所引用的数据。
然而,当需要在APU具有其本身的局部存储器的单独APU上执行的子程序之间,或者在一个或多个APU和一个或多个MPU的组合之间进行全局数据通信的情况下,常规链接机制则无法支持引用全局变量的功能。在常规的异构多处理器系统中,全局数据可以在几个位置驻留,而这些位置不能从在系统中不同处理器上执行的子程序进行一致的访问。但是,一个集成的可执行程序一般需要从系统中多个不同的处理器访问这些全局变量。
因此,希望能够在混合并行处理系统中访问全局变量,以克服常规系统的局限性。
发明内容
本发明用于在执行环境之间,在并行处理器体系结构中传送全局信息。该并行体系结构包括至少一个第一执行环境,至少一个第二执行环境和一个存储器流控制器。该并行处理器体系结构还包括一个信息传送功能。该信息传送功能用来命令存储器流控制器在至少一个第一执行环境和至少一个第二执行环境之间传送全局信息。
附图简要说明
为了更全面地理解本发明及其各种优点,下面将结合附图对本发明进行详细说明,其中附图为:
图1概括地描述了一种分布式处理系统环境,用于从第一执行环境向第二执行环境传送全局变量;
图2描述了将单独的对象模块编译和链接成一个集成的可执行程序的方法,其中集成的可执行程序还包括可从链接了对象模块的部分访问的全局变量;
图3概括地描述了用来将全局变量从第一执行环境传送到第二执行环境的全局变量描述符的组成部分;
图4A描述了用于从APU向MPU发送全局变量的一个伪代码函数;
图4B描述了用于从MPU向APU发送全局变量的一个伪代码函数;
图5概括地描述了集成的可执行程序和系统存储器和局部存储器之间的通信。
具体实施方式
在下文中阐述了各种特定的细节以便于全面地理解本发明。但是,本领域普通技术人员应该认识到本发明不需要这些特定细节的内容也可以实现本发明。在其他的实例中,对公知的部件用示意图或框图的形式来说明,以免不必要的细节妨碍对本发明的清楚理解。此外,对于大部分内容,关于网络通信、电磁信号技术等的细节内容均略去,因为这些内容对完整地理解本发明是不必要的,并且这些内容应该是相关领域的普通技术人员能够理解的。
还应提起注意的是,除非另外指明,这里描述的所有功能都可以即用硬件又用软件,或者用二者组合的形式实现。但在优选实施例中,除非另外指明,这些功能是由处理器根据计算机程序代码、软件和/或被编程为执行这些功能的集成电路执行的,如计算机或电子数据处理器。
参考图1,引用标记100通常指异构并行处理体系结构,提供了一种环境,用来在集成可执行程序中实现由多个代码对全局数据进行访问。该体系结构100包括一个分布式计算环境110和一个系统存储器160,二者由一个接口150以电子方式连接。环境110包括多个APU120,每个都带有其各自的局部存储器125。环境110还包括一个MPU130,如RISC处理器及其一级缓冲存储器135。在一个实施例中,MPU130通过一个信号路径145连接到系统存储器160。在一个实施例中,附加处理器包括一个SPU。
环境110还包括一个存储器流控制器(MFC)140。通常,MFC140用来实现MPU130和APU120处理器之间的数据移动和同步功能,并提供主系统存储器160和局部存储器125之间的数据传送。在图1中,MFC140通过接口150连接到系统存储器160。
通常,MFC140根据主处理器130或APU120的请求,在系统存储器160和APU120的局部存储器125之间实现信息的移动。因为APU120不能直接访问系统存储器160,MFC140根据传送函数,如在APU120或MPU130上运行的存根函数的请求,在系统存储器160和APU120的局部存储器125之间传送信息。在一个实施例中,MFC140包括一个直接存储器访问(DMA)设备。
体系结构100是一个可执行程序在其中运行的环境,其中可执行程序引用全局信息,如全局变量。可执行程序有多个子程序,将与全局变量相关的信息传送到一个第一执行环境,如APU120的局部存储器125,可执行程序还有至少一个子程序在第二执行环境,如连接到MPU130的共享存储器160中运行。APU120和MPU130通过使用MFC彼此之间通信。APU120和MPU130上的子程序通过访问并使用全局信息来传送信息。在一个实施例中,使用单个MPU130。在另一个实施例中,使用多个MPU130。
在一个实施例中,一个链接程序专门用来生成包含链接信息传送函数,如存根函数的集成的可执行程序,或者在两个链接的对象文件之间传送子程序。在一个实施例中,一个链接程序专门用于生成包含一个或多个链接信息传送函数,如存根函数的集成的可执行程序,或在局部存储器125和系统存储器160之间传送例程,这些例程能够传送在两个或多个对象文件中使用的全局变量的值。一般情况下,每个对象文件包含至少一个对全局变量的引用。对象文件可以包括多次引用。在一个实施例中,对象文件通过子程序调用或分支和链接指令执行存根函数。在另一个实施例中,由编译器对内联在全局变量调用点的传送函数进行替换。
一般而言,信息传送函数,如存根函数,命令MFC140在两个独立的执行环境,如系统存储器160和局部存储器125之间传送信息。信息传送函数由APU120和MPU130使用来访问并传送全局变量。链接程序接受插入的,经过编译的信息传送函数,并且通常将各种模块与信息传送函数绑定在一起,使得APU120和MPU130可以访问全局信息。对所调用的数据传送函数的调用既可以由编译器插入,也可以由人工程序员插入。
现在看图2,图中所示为创建包括全局变量的集成可执行程序时,由绑定器/编译程序执行的方法200的步骤。一般而言,集成可执行程序的数据部分包含几种类型的程序变量。这些程序变量被分成文本(代码)类和数据类。此外,这些程序变量还可以分为本地信息和全局信息。一般来说,全局信息用来在体系结构100中一个程序的不同的子程序或对象之间通信值。
在步骤205,以编程语言,如“C”,“C++”或汇编语言编写的源模块由一个编译器编译以产生为在体系结构100的多个单独执行环境,如APU120或MPU130中执行而改编的多个单独的对象编码模块。
通常,每个以APU120或MPU130为目标的经编译的代码模块都可以是源自几个不同的经编译的对象文件的代码或数据组合的结果。而且,多个可执行部分可以包括相同的代码或数据。一般情况下,步骤205还可以将所有代码或数据合并成一个连续的区域,这些代码或数据还可以在一个操作中加载到所选择的APU120的对应的局部存储器125中。以要在所选择的APU120上运行为目标的模块的例子有,三角函数、矩阵运算、平方根计算等。此外,步骤205将要编译的任何文件合并成以要在MPU130上执行为目标的对象模块。
在步骤210,链接程序链接从步骤205得到的多个执行对象文件之间的对象代码。这些由APU120使用的可执行部分将在其中包括全局和本地数据和代码。将全局变量从APU代码模块链接到APU代码模块已经指派,而在APU模块和MPU代码模块之间的链接尚未指派。
此外,在步骤210,生成并修改了一个外部符号字典符号,通常,外部符号字典对应于面向APU120使用的全局变量和面向MPU130使用的同样全局变量之间的标识。例如,对于以在MPU130上处理为目标的模块,如果外部符号字典具有变量“X”和“Y”,则该外部符号字典还具有以在APU120上处理为目标的项。指派给APU120的全局变量通常还有一个与从APU120到MPU130的全局变量相关的标识符。例如,全局变量“X”和“Y”被标识为“APU-x”和“APU-y”,从而允许链接程序既能区分相关的变量名称,又能确定这些变量之间的全局链接关系。
在步骤215,链接程序在对应于目标APU120模块的局部存储器125的存储器映射中,给每个经过编译的全局数据和代码分配一个相应的位置。系统存储器160的存储器位置被当成给定全局变量的原始位置。从而允许在将变量存储到APU中时,无需重写该变量,就能对其进行原始调用。
在步骤220中,链接程序将要在APU120上执行的对象模块链接到执行目标为MPU130的对象模块,从而创建一个集成的可执行程序。这些以APU120和MPU130为目标并由其使用的可执行部分,将带有定义好的全局和局部数据和代码。分配了一个外部名称,以从模块到模块正确地链接全局变量。通常,外部名称是绑定在集成模块中的所有子程序都可见的标记,用来帮助实现外部变量的传送。最后,在步骤230,步骤215和220中链接的全局存储器访问信息在各种模块之间共享,从而生成一个链接的集成可执行程序。
现在看图3,图中所示为一个全局信息描述符300。当在第一执行环境和第二执行环境之间,比如在共享存储器160和局部存储器125之间传送一个全局信息时,使用该描述符。一般来讲,全局描述符信息300由一个传送函数,如存根函数使用,其中,传送函数将全局变量从一个第一执行环境传送到一个第二执行环境,如从系统存储器160传送到局部存储器125。全局信息描述符300由绑定器/链接程序构造。
通常,全局变量描述符信息300由MFC140使用来在与第一处理器相关的存储器和与第二处理器相关的存储器之间传送信息,例如,利用全局描述符信息300,像“x”或一个可执行程序文本部分这样的全局变量可以从系统存储器160传送到第一APU120的局部存储器125,或者从第一APU120的局部存储器125传送到第二APU120的局部存储器125。在一个实施例中,这种数据传送是根据存根/传送函数的请求执行的。
为了在系统存储器160中全局变量的原始位置和对应于目标APU120的任何一个附加局部存储器125之间实现信息传送,绑定器/链接程序使用若干个外部名称310。一般来讲,外部名称310对绑定在集成模块中的所有子程序都是可见的,并且这包括绑定到单独的执行环境的子程序。
除全局变量的外部名称之外,其中包括正确处理器的标记(如具体的MPU130或APU120),在集成可执行程序中使用全局描述符的地方,绑定器/链接程序生成至少3个其它的映射标记。这些映射标记是系统存储器320中全局变量的地址,全局变量330的长度和局部存储器340中全局变量的地址。在另一个实施例中,使用多个地址340,一个用于被链接并以同样APU120为目标的各个子程序,为同样的全局信息使用独立的描述符,一个用于描述符300的各个外部名称。
在另一个实施例中,其中信息描述符300要使用多个局部存储器340的地址,一种备选的方法是在系统中使用间接级别,即地址变量的一个阵列中每个附加处理器一个元素。使用地址变量阵列将要求函数保持这些地址变量的有效性。
还是在另一个实施例中,与文本或代码项目相比,数据项目不需要全局变量320的长度,因为这些长度可以通过其他手段由计算机编程人员或编译器获得。但是,当数据是一个用于在APU120上执行的绑定代码部分时,在全局描述符300中需要长度320。
通常,编程人员可以使用字段320、330和340的值,以明示地使数据在第一和第二执行环境之间移动,方法是通过直接指定字段和所需要标记的名称使用全局信息,或者隐式地使数据移动,方法是使用将被扩展到适当引用的编译器提供的内置函数(即内部函数)。
现在看图4A,其中公开了一个C编程语言伪代码对象,用来将全局信息从APU120的局部存储器125传送到系统存储器160。图4A使用″drawFigure()″和″displayLitFigure()″例程概括公开了环境100中使用的多个全局变量。变量″figure″、″illumination″、″litFigure″和″worldViewTrans form″均是外部变量,也是全局变量。本领域技术人员应该知道,在图4A中,因为变量声明出现在任何子程序外部,这些变量声明的是全局变量,并且位于最后的数据部分。简单地看一下图4B,关键字“外部”表明这些变量是全局变量,无法在图4B的数据部分中找到。再来看图4A,图4A中的全局变量均与图1的系统存储器160相关联。
图4A中的第一个文件要在MPU130中执行,图4B中的第二个文件要在APU120中执行。概括而言,图4A和图4B所公开的代码允许通过传送/存根函数在MPU130和APU120之间传送代码。在一个实施例中,代码由一个编译器、编程人员产生,或者根据由程序员编写的高级描述通过编译器或其他工具产生。
在环境100中,有多个存储器位置无法从所有处理器寻址,如局部存储器125。因此,用于环境100的绑定器增加了一个新功能。对于每个外部变量,至少需要两个地址。一个存储器地址对应于主存储器130中的全局变量,(通常对应于图3的320),一个对应于局部存储器125中的潜在地址(通常对应于图3的340)。绑定器分配存储器空间,因此它知道两种地址。存储器地址存储在对象文件中的外部符号字典条目中。在一个实施例中,存储器地址存储在可执行文件的外部符号字典中。
还是在另一个实施例中,对于全局变量,这是所需要的全部信息,因为长度可以由编程人员计算得出。但是,在另一个实施例中,绑定器一般将长度330提供给要引用它的另一个对象文件。使用长度330,图4B的程序本身可以被当成一种形式的外部/全局数据。
为便于对图4A和图4B进行说明,给出了三个地址名称。前两个名称直接对应于所需要的地址。第三个名称是实际的全局变量名称,其解释取决于上下文环境(即其解释相当于前两个名称中的一个)。
例如,三个名称对应于图4A的变量“figure”。它们是_MPU_figure(figure在系统存储器160中的地址,对应于图3的320),_APU_figure(figure在局部存储器125中的地址,对应于图3的340)。变量″figure″包括与APU过程中的_MPU_figure或MPU过程中的_APU_figure对应的内容。
类似的逻辑可以扩展到全局变量APU_TL,局部存储器125中figure的特定填充内容(Charge)的地址。通常,填充内容可以定义为编译文件的结果,例如带有它调用的子程序的第二文件和绑定。对于有填充内容的文件,还由绑定器提供给引用它的其他对象文件的长度330。对于填充内容,内部名称不是直接从程序中的任何外部名称派生出来,而是由编程人员在链接过程中指定内部名称。
在一个实施例中,名称APU_TL通常指一个填充内容。在图4A中,_MPU_APU_TL是此填充内容在MPU存储器160中的地址,_APU_APU_TL是此填充内容在局部存储器中的地址,length_APU_TL是此填充内容的长度(大小)。在图4A和图4B所示的实施例中,所有三个输入变量都从MPU程序传送到APU程序。MPU_APU_TL通常对应于地址320,length_APU_TL通常对应于长度330,而_APU_APU_TL通常对应于长度340。
现在看图5,其中概括描述了在一个实施例500中,在包括全局数据和这些全局数据在系统存储器160中的位置的集成可执行程序505和局部存储器125之间的通信。
在图5中,集成的可执行程序包括一个外部符号字典(ESD)510。通常,ESD510在链接中创建,允许单独的模块能够访问全局数据,并且驻留在系统存储器160的可执行程序,即MPU代码和数据520,在各模块之间传送信息。EDS510包括全局信息的名称,以及要在模块之间共享的符号,如“figure”、“illumination”、“litFigure”等。
EDS510还包括每个模块的长度(len),每个模块的映像要在系统存储器160中存储的地址,MPU_addr。EDS510还包括每个模块的映像要在局部存储器中存储的地址,APU_addr。
集成可执行程序505包括全局数据538。通常,全局数据538是运行时可以从多个单独模块访问的数据。在图示的实施例中,全局数据538包括全局数据“figure”540,全局变量illumination542,全局变量worldViewTransformation 546。全局数据538的内容被多个标记引用。一个标记是MPU130使用的标记,另一个标记是APU120使用的标记。例如,图4A的全局变量“figure”由多个名称引用。绑定器将两个不同名称的变量链接在一起引用相同的全局变量。名称和链接信息都存储在ESD510中。
集成可执行程序505还包括将在系统存储器160中存储的单个模块的副本。在所示的实施例中,MPU代码和数据520存储在MPU系统存储器160中。MPU代码和数据520包括drawFigure符号523和displayLitFigure符号525。在MPU代码和数据520中,drawFigure符号523和displayLitFigure符号525分别使用全局数据figure540,和全局数据litFigure544。
集成可执行程序505还包括可用来复制到局部存储器125的至少一个模块的副本。在所示的实施例中,一个APU代码和数据530可用来存储在MPU系统存储器160中。APU代码和数据530包括transformAndLightFigure符号532,computeColor符号534和applyTransform 536。在一个实施例中,transform 532使用全局变量worldViewTransformation546。
在图5中还对系统存储器160进行了说明。系统存储器160包含要传送到局部存储器125的模块的映像,以及MPU代码和数据550。符号APU_TL存储在存储器位置550,并且包括系统存储器模块530的信息和引用。全局数据538也存储在系统存储器160中。这些全局变量,figure540、illumination542、litFigure544和worldViewTransformation546,都可以由MPU代码和数据560,并最终由运行在局部存储器125中的代码进行修改。
图5还说明了在系统存储器160中使用的MPU代码和数据560。这是来自集成可执行程序505的MPU代码和数据520的副本。MPU代码和数据560包含符号drawFigure 523和displayLitFigure525。
图5还说明了局部存储器125中的内容。在所示的实施例中,在运行时,局部存储器125还存储了全局数据538的副本。局部存储器125还有一个可执行程序APU代码和数据570,一个映像副本550。可执行程序APU代码和数据570可以访问全局数据figure540、illumination542、litFigure544和worldViewTransformation546。
应该理解,本发明可以采用许多形式和实施例。因此,在不背离本发明的实质或范围的前提下,可以对上述内容进行各种改变。本文所概括的功能允许用各种可能的编程模型实现。不应把本文公开的内容看成优于任何特定的编程模型,这些内容都是针对构建这些编程模型的基础机制。
在引用某些优选实施例对本发明进行说明之后,应该认识到所公开的实施例都是说明性的,而不在实质上构成限制,各种各样的改变、修改、变更和替换都已涵盖在上述公开内容中。在一些情况下,可以使用本发明的一些特征,而相应地不使用另外一些特征。根据上述关于优选实施例的说明,许多改变和调整对本领域技术人员来讲都是明显而必须的。因此,以与发明的范围相一致的方式,用合理宽的范围解释本说明书所附加的权利要求书是适当的。

Claims (21)

1.一种并行处理器体系结构,用来将全局信息从一个第一执行环境传送到一个第二执行环境,该体系结构包括:
至少一个第一执行环境;
至少一个第二执行环境
一个存储器流控制器;以及
一个信息传送函数,其中信息传送函数可用来命令存储器流控制器以在该至少一个第一执行环境和至少一个第二执行环境之间传送全局信息。
2.根据权利要求1的并行处理器体系结构,其特征在于第一执行环境是一个共享存储器。
3.根据权利要1的并行处理器体系结构,其特征在于第二执行环境是一个局部存储器。
4.根据权利要求3的并行处理器体系结构,其特征在于存储器流控制器还可以用来在多个局部存储器之间传送全局数据。
5.根据权利要求1的并行处理器体系结构,其特征在于局部存储器与附加处理器单元相关联。
6.根据权利要求1的并行处理器体系结构,其特征在于存储器流控制器还包括一个直接存储器访问设备。
7.一种可在至少一个主处理器和至少一个附加处理器上使用的集成可执行系统,该集成可执行系统包括:
至少一个可执行模块,可用在至少一个主处理器上执行;
至少一个附加可执行模块,可用来在至少一个附加处理器上执行,其中主要的和附加的可执行程序部分链接为一个集成可执行程序;以及
至少一个全局变量,其中全局变量的标记可用来在所链接的至少一个附加可执行程序模块和至少一个主要可执行程序模块之间传送。
8.根据权利要求7的系统,其特征在于至少一个附加的可执行程序模块被加载到局部存储器的一个连续的存储器中。
9.根据权利要求7的系统,其特征在于至少一个附加可执行程序可用来以一个加载操作加载到局部存储器中。
10.根据权利要求7的系统,其特征在于在将多个附加可执行部分绑定到主要可执行部分之前,先链接多个附加可执行部分。
11.根据权利要求7的系统,其特征在于至少一个附加可执行模块和至少一个主要可执行模块通过一个传送函数共享数据。
12.根据权利要求7的系统,其特征在于该至少一个附加可执行模块是从多个源文件派生而来的。
13.根据权利要求7的系统,其特征在于该至少一个主要处理器可执行模块是从多个源文件编译而来的。
14.一种链接主要可执行模块和附加可执行模块,从而实现访问独立执行区域中的全局信息的方法,该方法包括:
向系统存储器中的存储器位置分配全局数据;
向局部存储器中的存储器位置分配全局数据;
创建表示共享系统存储器中全局数据的地址的标记;以及
创建表示局部存储器中全局数据的地址的标记。
15.根据权利要求14的方法,还包括创建表示全局数据的长度的标记。
16.根据权利要求14的方法,还包括创建全局变量的外部名称。
17.一种将全局数据从附加处理器单元传送到主处理器单元的方法,包括:
将全局数据标记从附加处理器单元传送到存储器流控制器;
将全局数据长度标记从附加处理器单元传送到存储器流控制器;
将数据要在系统存储器中存储的系统存储器位置的标记从附加处理器单元传送到可移动控制器。
18.根据权利要求17的方法,其特征在于将数据要在系统存储器中存储的系统存储器位置的标记从附加处理器单元传送到可移动控制器还包括传送一个阵列。
19.一种将全局数据从附加处理器单元传送到主要处理器单元的方法,包括:
从主要处理器单元向移动流控制器传送数据;
将数据长度标记从主要处理器单元传送到移动流控制器;以及
将数据阵列要在局部存储器中存储的局部存储器地址从主要处理器单元传送到一个移动流控制器。
20.一个链接主要可执行程序模块和附加可执行程序模块,从而实现在独立的执行区域中访问全局信息的计算机程序产品,该计算机程序产品具有一种在其上实现有计算机程序介质,该计算机程序包括:
用来向共享系统存储器中的存储器位置分配全局数据的计算机代码;
用来向局部存储器中的存储器位置分配全局数据的计算机代码;
用来创建表示共享系统存储器中全局数据的地址的标记的计算机代码;以及
用来创建表示局部存储器中全局数据的地址的标记的计算机代码。
21.用来链接主要可执行模块和附加可执行模块,从而实现访问不同执行区域中的全局信息的处理器,包括一个计算机程序的该处理器包括:
用来向共享系统存储器中的存储器位置分配全局数据的计算机代码;
用来向局部存储器中的存储器位置分配全局数据的计算机代码;
用来创建表示共享系统存储器中全局数据的地址的标记的计算机代码;以及
用来创建表示局部存储器中全局数据的地址的标记的计算机代码。
CNB2003101010784A 2002-10-24 2003-10-15 在集成可执行程序中访问全局变量的系统和装置 Expired - Fee Related CN1292342C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/280,187 2002-10-24
US10/280,187 US7200840B2 (en) 2002-10-24 2002-10-24 Method and apparatus for enabling access to global data by a plurality of codes in an integrated executable for a heterogeneous architecture

Publications (2)

Publication Number Publication Date
CN1499362A true CN1499362A (zh) 2004-05-26
CN1292342C CN1292342C (zh) 2006-12-27

Family

ID=32106864

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2003101010784A Expired - Fee Related CN1292342C (zh) 2002-10-24 2003-10-15 在集成可执行程序中访问全局变量的系统和装置

Country Status (2)

Country Link
US (1) US7200840B2 (zh)
CN (1) CN1292342C (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102314342A (zh) * 2010-06-18 2012-01-11 微软公司 用于数据并行编程模型的编译器生成的调用存根
CN102841782A (zh) * 2011-06-23 2012-12-26 腾讯科技(深圳)有限公司 全局变量管理方法及装置
CN103080925A (zh) * 2010-07-29 2013-05-01 韩国水力原子力株式会社 利用制作成数据库的共享内存的工程分析程序间的同步连接方法及系统
WO2014060884A1 (en) * 2012-10-18 2014-04-24 International Business Machines Corporation Global data establishment for storage arrays controlled by plurality of nodes
US9207868B2 (en) 2012-10-18 2015-12-08 International Business Machines Corporation Validation of storage arrays based on information stored in global metadata
CN105183451A (zh) * 2015-07-30 2015-12-23 浪潮软件集团有限公司 一种确定调用关系的方法和多维程序管理装置
CN109313558A (zh) * 2016-06-14 2019-02-05 罗伯特·博世有限公司 用于运行计算单元的方法

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050086040A1 (en) * 2003-10-02 2005-04-21 Curtis Davis System incorporating physics processing unit
US7650266B2 (en) * 2005-05-09 2010-01-19 Nvidia Corporation Method of simulating deformable object using geometrically motivated model
US8849968B2 (en) * 2005-06-20 2014-09-30 Microsoft Corporation Secure and stable hosting of third-party extensions to web services
US20080005727A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for enabling cross language access to an addressable entity
US7818730B1 (en) * 2006-06-30 2010-10-19 The Math Works, Inc. Automatic minimal build dependency determination and building an executable with source code
US20080005728A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for enabling cross language access to an addressable entity in an execution environment
US20080244507A1 (en) * 2007-03-30 2008-10-02 Microsoft Corporation Homogeneous Programming For Heterogeneous Multiprocessor Systems
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US7627744B2 (en) * 2007-05-10 2009-12-01 Nvidia Corporation External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level
US9102962B2 (en) * 2007-10-16 2015-08-11 Shiu Nan Chen Production method for solid cultured active mushroom mycelium and fruit-body metabolites (AMFM) products thereof
US8255875B2 (en) 2008-09-30 2012-08-28 Rockwell Automation Technologies, Inc. Application builder for industrial automation
US8191072B2 (en) * 2008-12-22 2012-05-29 International Business Machines Corporation System and method for shifting workloads across platform in a hybrid system
US8458466B2 (en) * 2008-12-22 2013-06-04 International Business Machines Corporation System and method for handling cross-platform system call in a hybrid system
US8621207B2 (en) 2008-12-23 2013-12-31 International Business Machines Corporation System and method for handling cross-platform system call with shared page cache in hybrid system
US8024529B2 (en) * 2009-05-28 2011-09-20 Hewlett-Packard Development Company, L.P. Providing shared memory in a distributed computing system
US10996989B2 (en) * 2016-06-13 2021-05-04 International Business Machines Corporation Flexible optimized data handling in systems with multiple memories
KR20200093105A (ko) * 2019-01-25 2020-08-05 삼성전자주식회사 이기종 프로세서들을 위해 전자 장치의 프로세서에 의해 구현되는 방법 및 전자 장치를 동작시키기 위한 프로세서
CN109712026A (zh) * 2019-03-01 2019-05-03 云南电网有限责任公司曲靖供电局 基于高阶杆塔建模的输电线路巡线抢修决策平台

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4882674A (en) * 1985-03-05 1989-11-21 Wang Laboratories, Inc. Apparatus and method for control of one computer system by another computer system
DE4131380A1 (de) * 1991-09-20 1993-03-25 Siemens Ag Verfahren zur adaption einer objektorientierten applikation
CA2061117C (en) * 1991-12-02 1998-09-29 Neta J. Amit Apparatus and method for distributed program stack
US5339430A (en) * 1992-07-01 1994-08-16 Telefonaktiebolaget L M Ericsson System for dynamic run-time binding of software modules in a computer system
DE69323715T2 (de) * 1993-01-21 1999-10-21 Advanced Micro Devices Inc Elektronisches Speichersystem und -verfahren
US5664159A (en) * 1994-03-08 1997-09-02 Exponential Technology, Inc. Method for emulating multiple debug breakpoints by page partitioning using a single breakpoint register
US5850518A (en) * 1994-12-12 1998-12-15 Northrup; Charles J. Access-method-independent exchange
US5895503A (en) * 1995-06-02 1999-04-20 Belgard; Richard A. Address translation method and mechanism using physical address information including during a segmentation process
US6138140A (en) * 1995-07-14 2000-10-24 Sony Corporation Data processing method and device
US5812848A (en) * 1995-08-23 1998-09-22 Symantec Corporation Subclassing system for computer that operates with portable-executable (PE) modules
US5887172A (en) * 1996-01-10 1999-03-23 Sun Microsystems, Inc. Remote procedure call system and method for RPC mechanism independent client and server interfaces interoperable with any of a plurality of remote procedure call backends
US6006248A (en) * 1996-07-12 1999-12-21 Nec Corporation Job application distributing system among a plurality of computers, job application distributing method and recording media in which job application distributing program is recorded
US6145119A (en) * 1997-03-31 2000-11-07 International Business Machines Corporation Programming development environment for intranet and internet applications employing unique project data structure
US6061517A (en) * 1997-03-31 2000-05-09 International Business Machines Corporation Multi-tier debugging
US6157960A (en) * 1997-05-07 2000-12-05 International Business Machines Corporation Technique for programmatically creating distributed object programs
CA2264781C (en) * 1997-07-01 2002-02-12 Progress Software Corporation Testing and debugging tool for network applications
US6138209A (en) * 1997-09-05 2000-10-24 International Business Machines Corporation Data processing system and multi-way set associative cache utilizing class predict data structure and method thereof
US6209061B1 (en) * 1998-03-02 2001-03-27 Hewlett-Packard Co. Integrated hierarchical memory overlay having invariant address space span that inactivates a same address space span in main memory
US6077312A (en) * 1998-05-06 2000-06-20 International Business Machines Corporation Apparatus, program product and method of debugging utilizing a context sensitive breakpoint
US6427234B1 (en) * 1998-06-11 2002-07-30 University Of Washington System and method for performing selective dynamic compilation using run-time information
US6119247A (en) * 1998-06-22 2000-09-12 International Business Machines Corporation Remote debugging of internet applications
US6760907B2 (en) * 1998-06-30 2004-07-06 Sun Microsystems, Inc. Code generation for a bytecode compiler
US6480818B1 (en) * 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6704842B1 (en) * 2000-04-12 2004-03-09 Hewlett-Packard Development Company, L.P. Multi-processor system with proactive speculative data transfer
US6738977B1 (en) * 2000-05-31 2004-05-18 International Business Machines Corporation Class sharing between multiple virtual machines
US6779049B2 (en) * 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
US6735601B1 (en) * 2000-12-29 2004-05-11 Vmware, Inc. System and method for remote file access by computer
US7197600B2 (en) * 2001-02-16 2007-03-27 Broadcom Corporation Transferring data along with code for program overlays
US6968546B2 (en) * 2001-03-30 2005-11-22 Intel Corporation Debugging support using dynamic re-compilation

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102314342B (zh) * 2010-06-18 2016-08-17 微软技术许可有限责任公司 用于数据并行编程模型的编译器生成的调用存根
CN102314342A (zh) * 2010-06-18 2012-01-11 微软公司 用于数据并行编程模型的编译器生成的调用存根
CN103080925A (zh) * 2010-07-29 2013-05-01 韩国水力原子力株式会社 利用制作成数据库的共享内存的工程分析程序间的同步连接方法及系统
CN103080925B (zh) * 2010-07-29 2016-11-16 韩国水力原子力株式会社 利用制作成数据库的共享内存的工程分析程序间的同步连接方法及系统
CN102841782A (zh) * 2011-06-23 2012-12-26 腾讯科技(深圳)有限公司 全局变量管理方法及装置
CN102841782B (zh) * 2011-06-23 2017-08-01 腾讯科技(深圳)有限公司 全局变量管理方法及装置
WO2014060884A1 (en) * 2012-10-18 2014-04-24 International Business Machines Corporation Global data establishment for storage arrays controlled by plurality of nodes
US9336012B2 (en) 2012-10-18 2016-05-10 International Business Machines Corporation Global data establishment for storage arrays controlled by a plurality of nodes
US9244621B2 (en) 2012-10-18 2016-01-26 International Business Machines Corporation Global data establishment for storage arrays controlled by a plurality of nodes
US9207868B2 (en) 2012-10-18 2015-12-08 International Business Machines Corporation Validation of storage arrays based on information stored in global metadata
US10108362B2 (en) 2012-10-18 2018-10-23 International Business Machines Corporation Validation of storage arrays based on information stored in global metadata
CN105183451A (zh) * 2015-07-30 2015-12-23 浪潮软件集团有限公司 一种确定调用关系的方法和多维程序管理装置
CN105183451B (zh) * 2015-07-30 2018-11-02 浪潮金融信息技术有限公司 一种确定调用关系的方法和多维程序管理装置
CN109313558A (zh) * 2016-06-14 2019-02-05 罗伯特·博世有限公司 用于运行计算单元的方法

Also Published As

Publication number Publication date
CN1292342C (zh) 2006-12-27
US20040083342A1 (en) 2004-04-29
US7200840B2 (en) 2007-04-03

Similar Documents

Publication Publication Date Title
CN1292342C (zh) 在集成可执行程序中访问全局变量的系统和装置
CN1237443C (zh) 在调试异构体系结构中的集成可执行程序时设置断点的方法和设备
US8196129B2 (en) Adaptive class loading
US5475840A (en) High performance dynamic linking through caching
CN106663019B (zh) 处理值类型
US7219329B2 (en) Systems and methods providing lightweight runtime code generation
CN100414517C (zh) 异构体系结构中的覆盖生成、管理的方法和设备
CN1183447C (zh) 用于发送表构造的方法
EP1909174B1 (en) Method for generating interpretable code for storage in a device having limited storage
EP0709767A1 (en) Method and apparatus for multiplatform instruction set architecture
CN1577268A (zh) 共享库系统及构建该系统的方法
CN1172303A (zh) 一种在只读存储器中加载类的方法及系统
CN1271892A (zh) 自动的承接软件/适配器生成器
US20040003377A1 (en) Converting byte code instructions to a new instruction set
CN101160564A (zh) 用于实现有双端序能力的编译器的方法和装置
MXPA04002730A (es) Puentes de tipo.
CN1934532A (zh) 提供模块化本机方法启用系统的方法和装置
US20070006185A1 (en) System and method for reducing execution time of bytecode in java virtual machine
CN1506808A (zh) 用于在调试集成可执行代码时映射调试信息的方法和装置
US8539458B2 (en) Transforming addressing alignment during code generation
CN1208481A (zh) 分布式处理
US20050055678A1 (en) Method and apparatus for managing software in computer system using virtual machine
US6961839B2 (en) Generation of native code to enable page table access
van Katwijk Addressing types and objects in Ada
Ogel et al. Towards active applications: the virtual virtual machine approach

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1062342

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1062342

Country of ref document: HK

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20061227

Termination date: 20201015