CN1292342C - 在集成可执行程序中访问全局变量的***和装置 - Google Patents
在集成可执行程序中访问全局变量的***和装置 Download PDFInfo
- Publication number
- CN1292342C CN1292342C CNB2003101010784A CN200310101078A CN1292342C CN 1292342 C CN1292342 C CN 1292342C CN B2003101010784 A CNB2003101010784 A CN B2003101010784A CN 200310101078 A CN200310101078 A CN 200310101078A CN 1292342 C CN1292342 C CN 1292342C
- Authority
- CN
- China
- Prior art keywords
- global
- data
- module
- executable
- sent
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program 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对绑定在集成模块中的所有子程序都是可见的,并且这包括绑定到单独的执行环境的子程序。
除全局变量的外部名称之外,其中包括正确处理器的标记(如具体的MPU130或APU120),在集成可执行程序中使用全局描述符的地方,绑定器/链接程序生成至少3个其它的映射标记。这些映射标记是***存储器中全局变量的地址320,全局变量的长度330和局部存储器中全局变量的地址340。在另一个实施例中,使用多个地址340,一个用于被链接并以同样APU120为目标的各个子程序,为同样的全局信息使用独立的描述符,一个用于全局描述符信息300的各个外部名称。
在另一个实施例中,其中全局描述符信息300要使用多个局部存储器的地址340,一种备选的方法是在***中使用间接级别,即地址变量的一个阵列中每个附加处理器一个元素。使用地址变量阵列将要求函数保持这些地址变量的有效性。
还是在另一个实施例中,与文本或代码项目相比,数据项目不需要全局变量的长度330,因为这些长度可以通过其他手段由计算机编程人员或编译器获得。但是,当数据是一个用于在APU120上执行的绑定代码部分时,在全局描述符信息300中需要长度330。
通常,编程人员可以使用字段320、330和340的值,以明示地使数据在第一和第二执行环境之间移动,方法是通过直接指定字段和所需要标记的名称使用全局信息,或者隐式地使数据移动,方法是使用将被扩展到适当引用的编译器提供的内置函数(即内部函数)。
现在看图4A,其中公开了一个C编程语言伪代码对象,用来将全局信息从APU120的局部存储器125传送到***存储器160。图4A使用″drawFigure()″和″displayFigure()″例程概括公开了环境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,在各模块之间传送信息。ESD510包括全局信息的名称,以及要在模块之间共享的符号,如“figure”、“illumination”、“litFigure”等。
ESD510还包括每个模块的长度(len),每个模块的映像要在***存储器160中存储的地址,MPU_addr。ESD510还包括每个模块的映像要在局部存储器中存储的地址,APU_addr。
集成可执行文件505包括全局数据538。通常,全局数据538是运行时可以从多个单独模块访问的数据。在图示的实施例中,全局数据538包括全局数据“figure”540,全局变量illumination542,全局变量worldViewTransformation 546。全局数据538的内容被多个标记引用。一个标记是MPU130使用的标记,另一个标记是APU120使用的标记。例如,图4A的全局变量“figure”由多个名称引用。绑定器将两个不同名称的变量链接在一起引用相同的全局变量。名称和链接信息都存储在ESD510中。
集成可执行文件(file)505还包括将在***存储器160中存储的单个模块的副本。在所示的实施例中,MPU代码和数据520存储在MPU***存储器160中。MPU代码和数据520包括drawFigure符号522和displayFigure符号524。在MPU代码和数据520中,drawFigure符号522使用全局数据figure540,和displayFigure符号524使用全局数据litFigure544。
集成可执行文件505还包括可用来复制到局部存储器125的至少一个模块的副本。在所示的实施例中,一个APU代码和数据530可用来存储在MPU***存储器160中。APU代码和数据530包括transformAndLightFigure符号532,computeColor符号534和applyTransform 536。在一个实施例中,transformAndLightFigure符号532使用全局变量worldViewTransformation546。
在图5中还对***存储器160进行了说明。***存储器160包含要传送到局部存储器125的模块的映像,以及APU代码和数据550。符号APU_TL存储在存储器位置550,并且包括APU代码和数据530的信息和引用。全局数据538也存储在***存储器160中。这些全局变量,figure540、illumination542、litFigure544和worldViewTransformation546,都可以由MPU代码和数据560,并最终由运行在局部存储器125中的代码进行修改。
图5还说明了在***存储器160中使用的MPU代码和数据560。这是来自集成可执行文件505的MPU代码和数据520的副本。MPU代码和数据560包含符号drawFigure 522和displayFigure524。
图5还说明了局部存储器125中的内容。在所示的实施例中,在运行时,局部存储器125还存储了全局数据538的副本。局部存储器125还有一个可执行程序APU代码和数据550,作为一个映像副本。可执行程序APU代码和数据550可以访问全局数据figure540、illumination542、litFigure544和worldViewTransformation546。
应该理解,本发明可以采用许多形式和实施例。因此,在不背离本发明的实质或范围的前提下,可以对上述内容进行各种改变。本文所概括的功能允许用各种可能的编程模型实现。不应把本文公开的内容看成优于任何特定的编程模型,这些内容都是针对构建这些编程模型的基础机制。
在引用某些优选实施例对本发明进行说明之后,应该认识到所公开的实施例都是说明性的,而不在实质上构成限制,各种各样的改变、修改、变更和替换都已涵盖在上述公开内容中。在一些情况下,可以使用本发明的一些特征,而相应地不使用另外一些特征。根据上述关于优选实施例的说明,许多改变和调整对本领域技术人员来讲都是明显而必须的。因此,以与发明的范围相一致的方式,用合理宽的范围解释本说明书所附加的权利要求书是适当的。
Claims (19)
1.一种并行处理器***,用来将全局信息从一个第一执行单元传送到一个第二执行单元,该并行处理器包括:
至少一个第一执行单元;
至少一个第二执行单元;
一个存储器流控制器;以及
一个信息传送模块,其中信息传送模块可用来命令存储器流控制器以在该至少一个第一执行单元和至少一个第二执行单元之间传送全局信息。
2.根据权利要求1的并行处理器***,其特征在于第一执行单元是一个共享存储器。
3.根据权利要1的并行处理器***,其特征在于第二执行单元是一个局部存储器。
4.根据权利要求3的并行处理器***,其特征在于存储器流控制器还可以用来在多个局部存储器之间传送全局数据。
5.根据权利要求3的并行处理器***,其特征在于所述局部存储器与附加处理器单元相关联。
6.根据权利要求1的并行处理器***,其特征在于存储器流控制器还包括一个直接存储器访问设备。
7.一种可在至少一个主处理器和至少一个附加处理器上使用的集成可执行***,该集成可执行***包括:
至少一个主要的可执行模块,可用在至少一个主处理器上执行;
至少一个附加的可执行模块,可用来在至少一个附加处理器上执行,其中主要的可执行模块和附加的可执行模块链接为一个集成可执行程序;以及
至少一个全局变量,其中全局变量的标记可用来在所链接的至少一个附加的可执行程序模块和至少一个主要的可执行程序模块之间传送。
8.根据权利要求7的***,其特征在于至少一个附加的可执行程序模块被加载到局部存储器的一个连续的存储器中。
9.根据权利要求7的***,其特征在于至少一个附加的可执行程序可用来以一个加载操作加载到局部存储器中。
10.根据权利要求7的***,其特征在于在将多个附加的可执行模块绑定到主要的可执行模块之前,先链接多个附加可执行部分。
11.根据权利要求7的***,其特征在于至少一个附加的可执行模块和至少一个主要的可执行模块通过一个传送函数共享数据。
12.根据权利要求7的***,其特征在于该至少一个附加的可执行模块是从多个源文件派生而来的。
13.根据权利要求7的***,其特征在于该至少一个主要的处理器可执行模块是从多个源文件编译而来的。
14.一种链接主要的可执行模块和附加的可执行模块,从而实现访问独立执行区域中的全局信息的方法,该方法包括:
向***存储器中的存储器位置分配全局数据;
向局部存储器中的存储器位置分配全局数据;
创建表示共享***存储器中全局数据的地址的标记;以及
创建表示局部存储器中全局数据的地址的标记。
15.根据权利要求14的方法,还包括创建表示全局数据的长度的标记。
16.根据权利要求14的方法,还包括创建全局变量的外部名称。
17.一种将全局数据从附加处理器单元传送到主处理器单元的方法,包括:
将全局数据标记从附加处理器单元传送到存储器流控制器;
将全局数据长度标记从附加处理器单元传送到存储器流控制器;
将数据要在***存储器中存储的***存储器位置的标记从附加处理器单元传送到可移动控制器。
18.根据权利要求17的方法,其特征在于将数据要在***存储器中存储的***存储器位置的标记从附加处理器单元传送到可移动控制器还包括传送一个阵列。
19.一种将全局数据从附加处理器单元传送到主要处理器单元的方法,包括:
从主要处理器单元向移动流控制器传送数据;
将数据长度标记从主要处理器单元传送到移动流控制器;以及
将数据阵列要在局部存储器中存储的局部存储器地址从主要处理器单元传送到一个移动流控制器。
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 CN1499362A (zh) | 2004-05-26 |
CN1292342C true 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) |
Families Citing this family (25)
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 |
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 |
US7818730B1 (en) * | 2006-06-30 | 2010-10-19 | The Math Works, Inc. | Automatic minimal build dependency determination and building an executable with source code |
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 |
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 |
US8191072B2 (en) * | 2008-12-22 | 2012-05-29 | International Business Machines Corporation | System and method for shifting workloads across platform 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 |
US8589867B2 (en) * | 2010-06-18 | 2013-11-19 | Microsoft Corporation | Compiler-generated invocation stubs for data parallel programming model |
KR101139610B1 (ko) * | 2010-07-29 | 2012-04-27 | 한국수력원자력 주식회사 | 데이터베이스화된 공유메모리를 이용한 공학적 분석용 프로그램들간의 동기화된 연계 방법 및 시스템 |
CN102841782B (zh) * | 2011-06-23 | 2017-08-01 | 腾讯科技(深圳)有限公司 | 全局变量管理方法及装置 |
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 |
CN105183451B (zh) * | 2015-07-30 | 2018-11-02 | 浪潮金融信息技术有限公司 | 一种确定调用关系的方法和多维程序管理装置 |
US10996989B2 (en) * | 2016-06-13 | 2021-05-04 | International Business Machines Corporation | Flexible optimized data handling in systems with multiple memories |
DE102016211386A1 (de) * | 2016-06-14 | 2017-12-14 | Robert Bosch Gmbh | Verfahren zum Betreiben einer Recheneinheit |
KR20200093105A (ko) * | 2019-01-25 | 2020-08-05 | 삼성전자주식회사 | 이기종 프로세서들을 위해 전자 장치의 프로세서에 의해 구현되는 방법 및 전자 장치를 동작시키기 위한 프로세서 |
CN109712026A (zh) * | 2019-03-01 | 2019-05-03 | 云南电网有限责任公司曲靖供电局 | 基于高阶杆塔建模的输电线路巡线抢修决策平台 |
Family Cites Families (29)
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 |
EP0607668B1 (en) * | 1993-01-21 | 1999-03-03 | Advanced Micro Devices, Inc. | Electronic memory system and method |
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 |
US6219803B1 (en) * | 1997-07-01 | 2001-04-17 | 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 |
-
2002
- 2002-10-24 US US10/280,187 patent/US7200840B2/en not_active Expired - Fee Related
-
2003
- 2003-10-15 CN CNB2003101010784A patent/CN1292342C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1499362A (zh) | 2004-05-26 |
US7200840B2 (en) | 2007-04-03 |
US20040083342A1 (en) | 2004-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1292342C (zh) | 在集成可执行程序中访问全局变量的***和装置 | |
CN1171147C (zh) | 自动的承接软件/适配器生成器 | |
CN1114155C (zh) | 计算机***及其操作方法和控制装置 | |
US7219329B2 (en) | Systems and methods providing lightweight runtime code generation | |
CN106663019B (zh) | 处理值类型 | |
CN1134731C (zh) | 在计算机***中编译指令的方法 | |
US5475840A (en) | High performance dynamic linking through caching | |
US8196129B2 (en) | Adaptive class loading | |
CN100476721C (zh) | 提供模块化本机方法启用***的方法、和装置和*** | |
EP1909174B1 (en) | Method for generating interpretable code for storage in a device having limited storage | |
CN1499379A (zh) | 针对异构体系结构的在集成可执行程序内进行覆盖管理的方法和设备 | |
CN1577268A (zh) | 共享库***及构建该***的方法 | |
US20040003377A1 (en) | Converting byte code instructions to a new instruction set | |
CA2360431A1 (en) | Method for loading applications in a multiapplication onplatform system equipped with data processing resources, corresponding executing system and method | |
CN1274886A (zh) | 用于发送表构造的方法和装置 | |
CN1504881A (zh) | 爪哇执行设备和爪哇执行方法 | |
US8561042B2 (en) | System and method for reducing execution time of bytecode in java virtual machine | |
CN1653418A (zh) | 向作为不同类实例的对象提供通用内存管理代码 | |
CN1265487A (zh) | 用于改进java方法调用速度的方法和装置 | |
CN1506808A (zh) | 用于在调试集成可执行代码时映射调试信息的方法和装置 | |
US7849470B2 (en) | System and method for extending a programming language to include multiple dissimilar object systems | |
Richardson et al. | Implementing Persistence in E. | |
CN1208481A (zh) | 分布式处理 | |
CN111344667A (zh) | 用于在一个或多个虚拟内存页的虚拟内存子页内编译和执行代码的***和方法 | |
CN1592887A (zh) | 一种移动通信设备应用程序处理*** |
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 |