CN1499379A - 针对异构体系结构的在集成可执行程序内进行覆盖管理的方法和设备 - Google Patents
针对异构体系结构的在集成可执行程序内进行覆盖管理的方法和设备 Download PDFInfo
- Publication number
- CN1499379A CN1499379A CNA2003101014291A CN200310101429A CN1499379A CN 1499379 A CN1499379 A CN 1499379A CN A2003101014291 A CNA2003101014291 A CN A2003101014291A CN 200310101429 A CN200310101429 A CN 200310101429A CN 1499379 A CN1499379 A CN 1499379A
- Authority
- CN
- China
- Prior art keywords
- code
- execution environment
- root module
- subregion
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/453—Data distribution
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Multi Processors (AREA)
Abstract
本发明提供了在异构环境中创建和使用代码和数据分区的方法。这是通过将源代码和数据分为至少两个分区部分和至少一个未分区的部分来实现的。一般来说,分区部分的目标是在诸如附加处理器单元之类的独立的存储设备上执行。然后,从至少一个分区部分生成至少两个覆盖部分。许多分区部分彼此预先绑定在一起。还创建与预先绑定的许多分区和覆盖部分关联的根模块。根模块可用来在第一和第二执行环境之间交换至少两个覆盖部分。然后,将预先绑定的许多分区部分绑定到至少一个未分区的部分。绑定就产生了一个集成可执行程序。
Description
技术领域
一般来说,本发明涉及多重处理,具体来说,涉及通过使用根模块在许多处理器中管理覆盖的过程。
背景技术
一般包括使用耦合到同一个系统的许多微处理器以并行地处理一批数据的并行处理在计算机行业十分重要。一般来说,有三种主要的并行处理类型。它们分别是使用共享存储器、分布式存储器或两者组合的并行处理系统。通常,共享存储器是可以由许多处理器在诸如“加载”或“读取”命令之类的一次操作中访问的存储器。分布式存储器是限于单个处理器使用的存储器。换句话说,每一个处理器都可以在单一的访问操作中访问与其自己关联的存储器,但通常在一次操作中无法访问与其他处理器关联的存储器。最后,还有一种混合型或“异构”并行处理,在这种并行处理中,有一些共享存储器,还有一些分布式存储器。
混合型并行处理器系统的一个这样的例子包括精简指令集(RISC)主处理器单元(MPU),如PowerPCTM处理器,以及专门的或“附加”处理器单元(APU),如SynergisticTM处理器单元(SPU)。MPU通常用于执行通用代码,其中,通用代码包括复杂的控制流并组织全面的混合型并行处理功能。MPU可以访问各种系统存储器。虽然在一个实施例中,只使用了一个MPU,但是在其他实施例中,可以使用一个以上的MPU。一般来说APU用于执行数据流操作。换句话说,APU计算由高计算与控制决策比标识的重复性非常强的多媒体、图形、信号或网络处理工作负荷。在传统的混合型系统中,APU不能直接访问系统存储器,它们自己的存储器、局部存储器通常比共享存储器小得多。
一般来说,虽然使用混合型系统提供了较高的计算性能,但是它也给编程模式提出了较大的挑战。APU就存在一个这样的问题。APU无法直接访问系统存储器。因此,将在APU上运行的任何代码都必须转移到APU的关联的局部存储器,然后此代码才能在APU中执行。这样的混合型系统所提出的另一个严重挑战是,主要和附加的处理器可能具有不同的指令集和微型体系结构。
在管理APU中的程序执行时存在的一个问题是,APU中的代码和数据可以存在于APU的同一个大小有限的未分区的局部存储器中,从而导致信息处理问题。此外,在APU中执行的函数,在被从MPU调用之后,会经常需要访问通用的或“共享的”数据部分,以及执行其他通用的或共享的子例程。最后,将在APU中执行的代码可能会比较大,而难以容纳在APU的存储器中。
在从如上所述的计算机体系结构中提取性能时的一个操作是在代码和数据之间创建最佳分区。这样的分区应该有助于代码和数据重新使用,并因此最大限度地减少数据传输。对代码的有效分区可以使否则会太大而难以容纳到APU的局部存储器中的程序顺利地执行。然而,在如上所述的异构系统中,在实现代码的这一有效分区时可能会出现其他问题。APU的小的存储器容量意味着,针对APU的特定的函数可能会导致实际上太大的APU代码流有效地在APU上执行。
在一个实施例中,可以使用多个APU函数通过各种代码和数据部分在单个合并的二进制内潜在地大范围的共享和重新使用而在单个问题上进行合作。幼稚的存储器管理方案在这样的情况下可能会导致时间和空间两方面的性能效率严重低下。通常这是因为对于每一个目标APU函数,可能会有代码和数据的多个副本残留在MPU系统存储器中的合并的二进制中。此外,这一传统方法在转储时需要比较大的开销,因为预先绑定的APU模块的多个实例可能会获得共享APU代码和数据的相同的副本。这可能会严重减慢存储器通信,并可能在APU局部存储器中的处理产生不必要的延迟。
因此,需要能在异构体系结构中操作的并克服传统的存储器管理效率低下状况的存储器管理。
发明内容
本发明在异构计算网络中使用覆盖管理。代码可以从第一执行环境转移到第二执行环境。共享数据可以从第一执行环境转移到第二执行环境。在第二执行环境中对共享数据进行处理。第二执行环境中的代码被来自第一执行环境的其他代码覆盖。然而,共享数据不能被来自第一执行环境的其他数据覆盖。第二执行环境中的共享数据通过覆盖新的代码来进行处理。
附图说明
为对本发明、它的优点有一个比较完整的了解,现在将参考下面结合附图进行的详细说明,其中:
图1概要描述了用于创建和管理异构并行处理环境中的代码和数据覆盖的混合型并行处理环境;
图2A说明了将APU模块和它们的覆盖绑定到一个局部存储器中的过程;
图2B说明了将代码和数据覆盖到局部存储器的时间序列;
图3说明了生成包括根模块和覆盖模块的集成可执行程序的方法;
图4说明了使用包括根模块和覆盖模块的集成可执行程序的方法;以及
图5描述了包含覆盖和根模块的集成可执行程序的完整的系统视图。
具体实施方式
在下面的讨论中,阐述了许多具体细节以使您对本发明有全面的了解。然而,那些精通本技术的人将理解,本发明可以不用这样的具体细节来实施。在其他情况下,以示意图或方框图的形式说明了已知的元素,以不致于不必要的细节反而使得本发明变得更加模糊。此外,涉及网络通信、电子磁信令技术等等的细节基本上也被省略,因为为了对本发明有完整的了解,没有必要提供这样的细节,这样也不会妨碍精通相关技术的人的理解。
需要进一步指出的是,除非特别指明,否则这里描述的所有功能都可以以硬件或软件或者两者的组合来实施。然而,在优选的实施例中,除非特别指明,功能是由诸如计算机或电子数据处理器之类的处理器根据诸如计算机程序代码、软件之类的代码执行的,和/或被编码以执行这样的功能的集成电路执行的。
请参看图1,引用数字100一般表示一种异构并行处理体系结构,它提供一个用于从集成可执行程序内创建和管理代码和数据的环境。体系结构100包括分布式计算环境110和共享系统存储器160,这两者由接口150连接在一起,彼此通电。环境110包括许多附加处理器120,其中每个处理器都带有其相应的局部存储器125。分布式计算系统100进一步包括诸如RISC处理器之类的主处理器130,以及其一级高速缓存135。在一个实施例中,附加处理器单元包括SPU。在一个实施例中,使用单个MPU 130。在另一个实施例中,使用了许多MPU 130。
环境110进一步包括存储器流控制器(MFC)140。一般来说,MFC 140能使数据在MPU 130和APU 120处理器之间移动并提供同步能力,并在主系统存储器160和局部存储器125之间实现数据传输。
MFC 140能使信息,包括文本(即,代码)和数据,应主处理器130或APU 120的请求在共享存储器160和APU 120的局部存储器125之间移动。由于APU 120不能直接访问系统存储器160,MFC 140应诸如在APU 120或MPU 130上运行的存根函数之类的传输函数的请求在共享存储器160和APU 120的局部存储器125之间转移信息。在一个实施例中,MFC 140包括直接存储器访问(DMA)设备。
一般来说,体系结构100是一个可执行程序在其中运行的环境,其特征在于,可执行程序包括可加载到局部存储器125的模块。此外,可执行程序还包括根模块。根模块管理由链接器彼此绑定的模块和共享数据,并确保共享数据可由各种加载模块访问,并在将模块加载到局部存储器125时不被改写。换句话说,根模块可用来确保共享数据不被覆盖部分改写。一般来说,覆盖部分是改写局部存储器125中的信息的以前存储的部分的那一部分。通常,根模块驻留在APU 120的局部存储器125,不会被覆盖改写。
一般来说,根模块为共享数据定义存储器地址值。加载到局部存储器125的每一个模块都可以访问和修改共享数据。然而,根模块可用来确保加载的模块甚至在将新模块加载到局部存储器125时也不会改写共享数据。
一般来说,在如环境100中所使用的覆盖管理中,原来将要加载到目标APU 120的局部存储器125的模块被分成许多部分。这一分成几个部分的行为一般来说在程序员的指导下在编译期间发生,也可以在链接期间发生。在一个实施例中,各个部分封装了时间局限性。换句话说,各个部分在“短的”时间段内重复地被访问,如此,创建了模块中的代码的空间局限性(即,被经常访问的代码是紧邻的)。然后,这些被拆分的模块被链接器彼此绑定以产生在局部存储器125中可使用的模块。
通常,创建包含那些最常使用的代码或数据部分的根模块,并指向局部存储器125。绑定器还映射指定给局部存储器125的代码的非驻留部分(即,代码或数据的不是经常使用的部分),以使非驻留部分将占用相同的存储器位置。换句话说,非驻留部分可以彼此覆盖。根模块可以添加对覆盖管理器的调用,以按需要获取和处理各个覆盖部分。
将被许多APU函数或APU分区代码流引用(从中读取和向其中写入)的数据被指定为共享数据,并将被给予其自己的外部符号MPU地址和长度,以及APU地址。随后共享数据在被存储在局部存储器125中的目标模块借助于根模块在局部存储器125中进行访问时是按其自己存储器地址引用的。如此,用于在APU 120中执行的许多模块可以访问局部存储器125中的共享数据,而不必将共享数据嵌入在每一目标模块内。由两个连续的目标模块按巳知存储器地址访问共享数据可以节省数据传输带宽、数据传输的时间等等。通常,这是因为在将共享数据发回到系统存储器之前,共享数据只须转移到局部存储器125一次即可完成在上面执行的所有处理。
现在请参看图2A,该图说明了一个绑定图表200。在绑定图表200中,说明了从单个源程序分区的代码和数据模块。在绑定图表200中,说明了根模块215。根模块215 APU_root包括代码的被认为必须与其执行所需的数据一起驻留在APU局部存储器中的那些部分,被称为根代码和根数据。有第一个覆盖APU_overlay_A1 220和APU_overlay_A2 230
然后,这些覆盖在创建集成可执行程序期间被APU绑定器249绑定。APU绑定器249生成必要的重新定位信息,以允许包括代码和数据的APU覆盖在系统存储器160和局部存储器125之间传输。(2步骤)绑定进程使用诸如覆盖220、230和根代码215驻留在系统存储器160中的具体地址、覆盖模块220、230在局部存储器125中的目标地址之类的信息。
覆盖代码和覆盖数据的分区可以由于不同的理由而发生。在如图2A说明的覆盖代码的情况下,一个理由可以是,代码太大而难以容纳到局部存储器125,并因此而分为较小的片段。
当集成可执行程序执行时,它将根代码216、根模块215的一部分,以及根数据217,根模块215的一部分传输到局部存储器125。根代码/数据216、217存储在局部存储器125的在链接时间确定的存储器位置。应用程序的每一个分区的组件被以这样的方式修改以反映对这些位置的认识,以便不会改写代码和数据。
根代码216进一步包括对覆盖管理例程提供的系统的调用。通常这些覆盖管理例程提供了到系统内的数据传输函数的级别比较高的接口。这些覆盖管理例程将驻留在APU局部存储器125中的已知的固定位置,与根代码分开。
在图2A说明的实施例中,在执行时,根代码216首先调用overlay_A1 220。Overlay_A1 220从系统存储器160转移到局部存储器125。Overlay_A1代码221存储在存储器位置238,overlay_A1数据222存储在APU存储器位置239。overlay_Al代码221存储在存储器范围242,overlay_A1数据222存储在储器范围245。
然后执行overlay_A1代码221。一旦完成执行,控制便传回到根代码216。然后,根代码216调用overlay_A2 230
在图2A说明的实施例中,然后overlay_A2 230改写(“覆盖”)以前存储的Overlay_A1 220。overlay_A2代码231还从固定存储器地址238开始,overlay_A2数据239从固定存储器地址239开始。因此,overlay_A2代码231占用以前由overlay_A1代码221占用的存储器范围242。同样,APU覆盖数据232占用以前由覆盖代码222占用的存储器范围245。
此外,overlay_A2代码231还占用第二存储器范围243。overlay_A2数据232还占用第二存储器范围246。在图2A说明的实施例中,overlay_A2 230的代码231和数据232大于以前的代码221和数据222部分。因此,代码231和数据232部分占用局部存储器125中的更多空间。
现在请参看图2B,该图说明了本发明的第二个实施例,管道图表250。APU 120可用来将数据加载到局部存储器125,然后加载此代码的连续的片段,从而转换数据。换句话说,由覆盖代码连续地处理给定的局部存储器中的数据。在一个实施例中,代码和数据被映射到同一局部存储器125中的相同的存储器位置。
在管道图表250中,说明了被指定为共享数据260的已编译模块。共享数据260表示将在用于在局部存储器125中执行的多个模块之间共享的数据。进一步说明了第一个已编译模块270(在一个实施例中,第一个覆盖部分),包括代码(1)和数据(1)子部分,第二个已编译模块280(在一个实施例中,第二个覆盖部分),包括代码(2)和数据(2)子部分。一般来说,第一和第二个已编译模块270、280表示两个APU模块,它们将被绑定器290修改以允许它们中的每一个访问局部存储器125中的单个位置的通用的或共享数据260。
虽然代码(1)和数据(1)子部分以前被彼此绑定以创建第一个模块220,代码(2)和数据(2)子部分以前被彼此绑定以创建第二个模块220,但两者都将访问共享数据260。因此,绑定器290将共享数据260的未来的存储器地址(即,将存储在局部存储器125中的位置)绑定到第一和第二个覆盖部分270、280。换句话说,对270或280中的共享存储器的任何组件的引用都将被修改以在其“共享”位置引用,如果每一个模块都具有其自己的共享数据的副本,与它将占用的位置相反。
在绑定器290执行完地址绑定步骤之后,包括覆盖的程序便处于可执行形式。共享数据260首先被传输到局部存储器125。然后,在传输297中在时间“1”第一个函数或覆盖模块270被传输到局部存储器125。然而,当包括覆盖代码(1)和覆盖数据(1)的第一覆盖270的存储在局部存储器125时,还有一个缺口272。缺口272表示可以加载到局部存储器125而不会改写共享数据260的最大大小覆盖的限制,如图2A所描述。
在传输299中的时间“2”中,没有传输共享数据210。相反,共享数据210从以前的时间“1”驻留在局部存储器125中,而传输覆盖代码280。在时间“2”,在加载第二模块280之后在局部存储器125中没有缺口,因为覆盖模块280占用了局部存储器125中的可用空间。然而,根模块确保了覆盖模块280不会改写共享数据260。在再一个实施例中,编译器确保了如果绑定模块270、280被加载到局部存储器125,模块270、280不会绑定成将迫使改写共享数据2610的大小。在再一个实施例中,编译器在程序员通过插入杂注等等的指导下操作。
现在请看图3,该图说明了一个用于创建包括覆盖模块的集成可执行程序的方法300。一般来说,方法300是在绑定器290中执行的。
在步骤310中,编译用于创建在环境300中运行集成可执行程序的源代码。源代码可以包含分区指令。即,源代码包含关于如何将源代码分解为诸如覆盖模块和根模块之类的分区的指令。这些分区指令可以伴随程序员的指导,或者由编译器直接计算。
在步骤320中,创建将仍驻留在与APU 120关联的局部存储器125中的目标文件。此目标文件是诸如图2A的根模块215之类的根模块。根模块仍驻留,并可用来启动覆盖的传输。
在步骤330中,创建诸如图2A的APU_overlay_A1 220和APU_overlay_A2 230之类的两个或更多覆盖。在运行时间,这些覆盖将连续地从系统存储器160转移到局部存储器125。
在步骤340中,创建在执行集成可执行程序期间驻留在系统存储器160中的目标文件。此驻留部分里面存储了在运行时间要发送到局部存储器125的覆盖的“映像”。
在步骤345中,方法300的操作系统提供了覆盖例程,其“映像”存储在驻留在系统存储器中的目标文件中,并可以从根模块调用。通常,这些覆盖例程的可执行副本将要在运行时间在传输根模块215之前或与其一起传输到局部存储器125。
在步骤350中,覆盖分区和根模块彼此绑定在一起。换句话说,用于在各种APU 120上执行的目标代码链接在一起。在步骤350中,根模块220具有插入到覆盖管理例程的调用,以控制要在局部存储器125和系统存储器160之间传输的覆盖。
在步骤360中,用于相同APU 120的覆盖的单独的代码和数据分段被映射到相同的存储器地址238和239。在步骤370中,根模块215和覆盖220、230被给予对覆盖管理例程的特定调用。根模块可用来影响系统存储器和附加处理器单元之间的信息传输。通常,这些例程是封装的信息传输例程,如MFC命令,用于为分区的代码提供相应的接口。
在步骤380中,执行绑定进程的第二个步骤。一般来说,这包括将用于在APU 120上执行的目标绑定到用于在系统存储器160上执行的代码。第二个绑定进程还插入固定存储器地址238、239之外的允许在系统存储器160和局部存储器125之间进行数据移动的特定的存储器地址。在一个实施例中,第二个绑定进程在根模块中插入与一个或多个标识的通用共享数据组件关联的第二组重新定位信息,根模块可用来标识和调整两个或更多覆盖的存储器边界。
在步骤390中,创建包含至少一个根模块、两个覆盖模块和一个用于在共享存储器160内执行的模块的集成可执行程序。一般来说,集成可执行程序是由能够在用于局部存储器125的模块和系统存储器160之间解析参数和引用的链接器创建。
现在请参看图4,该图说明了用于执行包括覆盖模块和根模块的集成可执行程序的方法400。在步骤410中,集成可执行程序被加载到系统存储器160。
在步骤420中,包括根代码216的根模块215在根代码216中调用覆盖管理器,并和覆盖管理器一起被传输到局部存储器125。在步骤430中,开始执行根代码216。根代码216一直执行,直到需要共享数据260。然后,根代码216持续执行,直到需要代码221或数据222。然后,在步骤440中,根模块调用覆盖管理器以将覆盖代码221和覆盖数据222分别加载到固定存储器地址238、239。
在步骤460中,overlay_A1代码221一直执行,直到完成。然后,在步骤470中,根模块代码216持续执行,直到需要overlay_A2 code 231或overlay_A2数据232。在步骤480中,根模块代码216调用覆盖管理器以加载overlay_A2代码231和overlay_A2数据232。这两者分别在固定存储器地址238、239加载,从而改写覆盖代码221和覆盖数据222。
在步骤485中,覆盖代码231完成执行过程。此外,根代码216在根数据217或覆盖数据232上完成执行。在步骤490中,根模块215调用覆盖管理器以将处理过的数据(根数据217或覆盖数据232,或两者)发回到系统存储器160。
现在请参看图5,该图概要说明了包括覆盖和根模块的映像的集成可执行程序505和系统存储器160和局部存储器125中的这些覆盖和根模块的位置之间的对应关系500的一个实施例。
可执行程序505是如图4所示的两步绑定进程创建的单个可执行程序的代表。可执行程序505由链接器产生,其特征在于,链接器可用来创建覆盖分区。可执行程序驻留在系统存储器160中。除在MPU 130上执行的代码和数据之外,可执行程序505内还包含在APU 120上执行的代码和数据。指定给APU 120使用的代码和数据在执行时间被传输到局部存储器125。在再一个实施例中,代码和数据从局部存储器125传输到系统存储器160。
在图5中,集成可执行程序包括外部符号词典(EDS)510。一般来说,EDS 510是在链接期间创建的,以允许将诸如覆盖模块、根模块之类的模块和驻留在系统存储器160的可执行程序分开,以在它们之间传输信息。EDS 510包括要传输的信息的名称,如APU_Aroot_code 516、APIS_A1_code 517、APUA2_code 518、通用数据519等等。
EDS 510进一步包括每一个模块的长度(“len”),每一个模块的映像将要存储在系统存储器160中的地址,“MPU_addr”。EDS 510进一步包括每一模块的映像将要存储在局部存储器中的地址,“APU_addr”。通常,对于覆盖模块,覆盖代码的“APU_addr”对应于固定存储器地址238,覆盖数据的“APU_addr”对应于固定存储器地址239。
集成可执行程序505进一步包括将存储在系统存储器160中的单个绑定模块的副本。一些例子是APU_Aroot模块215、APU_A1_code 221和APU_A1_data 222。
图5中还显示了系统存储器160。系统存储器160包含集成可执行程序505内的要传输到局部存储器125的模块的映像。这样的模块的一些例子是APU_Aroot_code 550、APU_A1_code 555等等。此外,系统存储器还包含MPU代码和数据578。一般来说,MPU代码和数据578包含不被复制和发送到局部存储器125的代码。
图500进一步说明了局部存储器125。在说明的实施例中,局部存储器580有一个覆盖管理器581存储在其内。一般来说,覆盖管理器581包含根模块代码582调用的例程。驻留根模块包括根模块代码582和根数据594。局部存储器580进一步包括被APU_A2_code 586覆盖的APU_A1_code 584。局部存储器125更进一步具有被APU_A2_data 592覆盖的APU_A1_data 590。最后,还有不被数据590或数据592覆盖的APU_Aroot_data 594。
应该理解,本发明可以采取许多形式和实施例。相应地,在不偏离本发明的精神或范围的情况下,对上面的实施例进行各种修改。这里概括的功能可以产生各种编程模式。本说明书不应该被理解为优选任何特定的编程模式,相反,而应作为可以构建这些编程模式的基础机制。
通过参考本发明的某些优选的实施例对本发明进行描述之后,值得注意的是,所说明的实施例只是说明性的,而在本质上不作任何限制,在前述的说明书中可以作出各种各样的变化、修改、更改和替换,在有些情况下,可以使用本发明的某些特点,而不使用其他特点。那些精通本技术的人在阅读优选的实施例的前述的描述之后可以容易地实现许多这样的变化和修改。相应地,对所附权利要求进行宽范围的并以与本发明的范围一致的方式解释是合理的。
Claims (36)
1.一种用于创建和使用覆盖以在异构指令集体系结构中操作的方法,包括:
将信息分为至少两个分区的部分和至少一个未分区的部分;
将至少一个未分区的部分的目标指向第一执行环境;
将许多分区的目标指向第二执行环境;
从至少一个分区部分生成至少两个覆盖部分;
将许多分区部分彼此绑定;
创建一个与预先绑定的许多分区和覆盖部分关联的根模块,根模块可用来在第一和第二执行环境之间交换至少两个覆盖部分;
将预先绑定的许多分区部分绑定到至少一个未分区的部分;以及
创建集成可执行程序。
2.根据权利要求1所述的方法,其特征在于,绑定步骤进一步包括解决预先绑定的分区的引用。
3.根据权利要求1所述的方法,进一步包括使用可用来在第一和第二执行环境之间交换许多分区的根模块。
4.根据权利要求1所述的方法,其特征在于,将信息分区的步骤进一步包括将代码分区。
5.根据权利要求1所述的方法,其特征在于,将信息分区的步骤进一步包括将数据分区。
6.根据权利要求3所述的方法,其特征在于,分区的步骤进一步包括使用用户定义的杂注。
7.根据权利要求1所述的方法,其特征在于,分区步骤使用编译器。
8.根据权利要求1所述的方法,其特征在于,将信息分区的步骤进一步包括生成一个代码分区,该代码分区可用来在第二执行环境中覆盖第二代码分区。
9.根据权利要求1所述的方法,其特征在于,绑定进一步包括插入重新定位信息。
10.根据权利要求1所述的方法,其特征在于,创建根模块的步骤在编辑期间发生。
11.根据权利要求1所述的方法,其特征在于,创建根模块的步骤在编辑之后发生。
12.根据权利要求1所述的方法,其特征在于,创建根模块的步骤进一步包括将根模块的目标指向附加处理器单元。
13.根据权利要求1所述的方法,其特征在于,创建根模块的步骤进一步包括在根模块中插入可用来影响第一和第二执行环境之间的分区的数据传输的存储器流命令。
14.用于在异构计算环境的附加处理器单元中生成和管理根模块的方法,该方法包括:
从两个或更多分区代码部分的至少一部分创建两个或更多覆盖;
创建可用来控制附加处理器单元中两个或更多覆盖的执行的根模块,根模块进一步可用来在附加处理器单元中执行;
在至少两个或更多覆盖之间标识一个或多个通用共享数据组件;
在根模块中插入与一个或多个标识的通用共享数据组件关联的第一组重新定位信息,其中根模块可用来影响系统存储器和附加处理器单元之间的信息传输;以及
在根模块中插入与一个或多个标识的通用共享数据组件关联的第二组重新定位信息,其中根模块可用来标识和调整两个或更多覆盖的存储器边界。
15.根据权利要求14所述的方法,其特征在于,覆盖包括代码覆盖。
16.根据权利要求14所述的方法,其特征在于,覆盖包括数据覆盖。
17.根据权利要求14所述的方法,进一步包括将代码部分分区的步骤,其中,分区在程序员的引导下进行。
18.根据权利要求14所述的方法,进一步包括将代码部分分区的步骤,其中,分区通过使用编译器来进行。
19.根据权利要求14所述的方法,进一步包括创建集成可执行程序。
20.在异构计算系统中使用覆盖管理的方法,该方法包括:
将代码从第一执行环境转移到第二执行环境;
将共享数据从第一执行环境转移到第二执行环境;
在第二执行环境中处理共享数据;
用来自第一执行环境的其他代码覆盖第二执行环境中的代码,而不是用来自第一执行环境的其他数据覆盖共享数据;以及
通过使用覆盖的新代码来处理第二执行环境中的共享数据。
21.根据权利要求20所述的方法,其特征在于,转移步骤进一步包括使用存储器地址,其中,存储器地址分隔共享数据。
22.根据权利要求20所述的方法,其特征在于,将代码从第一执行环境转移到第二执行环境的步骤使用存根函数。
23.根据权利要求20所述的方法,进一步包括将代码从主处理器单元转移到第二执行环境。
24.根据权利要求20所述的方法,进一步包括将代码从第一执行环境转移到附加处理器单元。
25.根据权利要求20所述的方法,进一步包括通过使用根模块来管理代码的覆盖。
26.根据权利要求20所述的方法,进一步包括将非共享数据从第一执行环境转移到第二执行环境。
27.根据权利要求20所述的方法,进一步包括处理非共享数据。
28.根据权利要求20所述的方法,进一步包括用来自第一执行环境的其他非共享数据覆盖第二执行环境中的非共享数据,而不是用来自第一执行环境的其他数据覆盖共享数据。
29.根据权利要求20所述的方法,进一步包括通过第二执行环境中存储的代码修改第二执行环境中的共享数据。
30.根据权利要求20所述的方法,其特征在于,通过使用覆盖的新代码处理第二执行环境中已处理的数据包括处理数据管道中的共享数据。
31.根据权利要求20所述的方法,其特征在于,共享数据驻留在第二执行单元,以便用于至少两次加载许多代码。
32.根据权利要求20所述的方法,其特征在于,包括至少一个库例程的代码驻留在第二执行环境中,以便至少覆盖一次代码。
33.在异构计算环境中具有覆盖根模块的系统,该系统包括:
许多覆盖部分;
局部存储器;
共享数据,其中,共享数据被许多覆盖部分引用,并存储在局部存储器中;
至少一个覆盖数据传输命令;
系统存储器;
存储器流控制器,其中,存储器流控制器可用来被至少一个覆盖数据传输命令指挥以在系统存储器和局部存储器之间转移许多覆盖部分;以及
根模块,其中,覆盖根模块可用来将许多覆盖部分从系统存储器加载到局部存储器中,而不会改写共享数据。
34.根据权利要求30所述的设备,其中,根模块驻留在附加处理器单元中。
35.一种用于创建和使用覆盖以在异构指令集体系结构中操作的计算机程序产品,该计算机程序产品具有在其上记录了计算机程序的介质,该计算机程序包括:
用于将信息分为至少两个分区的部分和至少一个未分区的部分的计算机代码;
用于将至少一个未分区的部分的目标指向第一执行环境的计算机代码;
用于将许多分区的目标指向第二执行环境的计算机代码;
用于从至少一个分区部分生成至少两个覆盖部分的计算机代码;
将许多分区部分彼此绑定的计算机代码;
用于创建一个与预先绑定的许多分区和覆盖部分关联的根模块的计算机代码,根模块可用来在第一和第二执行环境之间交换至少两个覆盖部分;
用于将预先绑定的许多分区部分绑定到至少一个未分区的部分的计算机代码;以及
用于创建集成可执行程序的计算机代码。
36.一种用于创建和使用覆盖以在异构指令集体系结构中操作的处理器,该包括计算机程序的处理器包括:
用于将信息分为至少两个分区的部分和至少一个未分区的部分的计算机代码;
用于将至少一个未分区的部分的目标指向第一执行环境的计算机代码;
用于将许多分区的目标指向第二执行环境的计算机代码;
用于从至少一个分区部分生成至少两个覆盖部分的计算机代码;
将许多分区部分彼此绑定的计算机代码;
用于创建一个与预先绑定的许多分区和覆盖部分关联的根模块的计算机代码,根模块可用来在第一和第二执行环境之间交换至少两个覆盖部分;
用于将预先绑定的许多分区部分绑定到至少一个未分区的部分的计算机代码;以及
用于创建集成可执行程序的计算机代码。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/280,242 | 2002-10-24 | ||
US10/280,242 US7222332B2 (en) | 2002-10-24 | 2002-10-24 | Method and apparatus for overlay management within an integrated executable for a heterogeneous architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1499379A true CN1499379A (zh) | 2004-05-26 |
CN100414517C CN100414517C (zh) | 2008-08-27 |
Family
ID=32106882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101014291A Expired - Fee Related CN100414517C (zh) | 2002-10-24 | 2003-10-17 | 异构体系结构中的覆盖生成、管理的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7222332B2 (zh) |
CN (1) | CN100414517C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100375067C (zh) * | 2005-10-28 | 2008-03-12 | 中国人民解放军国防科学技术大学 | 异构多核微处理器局部空间共享存储方法 |
CN101351776B (zh) * | 2005-12-30 | 2014-06-25 | 英特尔公司 | 用于管理存储器访问的装置、产品、方法及系统 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7243333B2 (en) * | 2002-10-24 | 2007-07-10 | International Business Machines Corporation | Method and apparatus for creating and executing integrated executables in a heterogeneous architecture |
US20050044548A1 (en) * | 2003-08-20 | 2005-02-24 | John Page | Efficient replication of embedded operating system with a write filter and overlay partition |
US8312431B1 (en) * | 2004-09-17 | 2012-11-13 | Oracle America, Inc. | System and computer readable medium for verifying access to signed ELF objects |
US20060123401A1 (en) * | 2004-12-02 | 2006-06-08 | International Business Machines Corporation | Method and system for exploiting parallelism on a heterogeneous multiprocessor computer system |
US7581225B2 (en) * | 2005-04-29 | 2009-08-25 | Microsoft Corporation | Multithreading with concurrency domains |
US7886269B2 (en) * | 2005-04-29 | 2011-02-08 | Microsoft Corporation | XML application framework |
US8418132B2 (en) * | 2005-04-29 | 2013-04-09 | Microsoft Corporation | Application description language |
US8275793B2 (en) * | 2005-04-29 | 2012-09-25 | Microsoft Corporation | Transaction transforms |
US20060245096A1 (en) * | 2005-04-29 | 2006-11-02 | Microsoft Corporation | Application framework phasing model |
US8132148B2 (en) | 2005-04-29 | 2012-03-06 | Microsoft Corporation | XML application framework |
US8191054B2 (en) * | 2006-10-20 | 2012-05-29 | Analog Devices, Inc. | Process for handling shared references to private data |
US8327338B2 (en) | 2009-01-15 | 2012-12-04 | International Business Machines Corporation | Overlay identification of data processing target structure |
GB0911099D0 (en) * | 2009-06-26 | 2009-08-12 | Codeplay Software Ltd | Processing method |
US8352702B2 (en) * | 2009-12-17 | 2013-01-08 | International Business Machines Corporation | Data processing system memory allocation |
WO2011079942A1 (en) * | 2009-12-28 | 2011-07-07 | Hyperion Core, Inc. | Optimisation of loops and data flow sections |
KR101636521B1 (ko) * | 2010-03-26 | 2016-07-06 | 삼성전자주식회사 | 코드 오버레이 생성 장치 및 방법 |
GB2500349A (en) * | 2010-12-16 | 2013-09-18 | Ibm | A Method for validating run-time references |
US9606827B2 (en) | 2015-03-24 | 2017-03-28 | International Business Machines Corporation | Sharing memory between guests by adapting a base address register to translate pointers to share a memory region upon requesting for functions of another guest |
US9612860B2 (en) | 2015-03-24 | 2017-04-04 | International Business Machines Corporation | Sharing memory between guests by adapting a base address register to translate pointers to share a memory region upon requesting for functions of another guest |
CN106325967B (zh) * | 2015-06-30 | 2019-10-25 | 华为技术有限公司 | 一种硬件加速方法、编译器以及设备 |
Family Cites Families (35)
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 |
US6061517A (en) | 1997-03-31 | 2000-05-09 | International Business Machines Corporation | Multi-tier debugging |
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 |
US6157960A (en) | 1997-05-07 | 2000-12-05 | International Business Machines Corporation | Technique for programmatically creating distributed object programs |
EP0939929A4 (en) | 1997-07-01 | 2007-01-10 | Progress Software Corp | TEST AND DEBUGGING TOOL FOR NETWORK APPLICATIONS |
JPH1169785A (ja) | 1997-08-27 | 1999-03-09 | Hitachi Ltd | 電源回路 |
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 |
US6542926B2 (en) * | 1998-06-10 | 2003-04-01 | Compaq Information Technologies Group, L.P. | Software partitioned multi-processor system with flexible resource sharing levels |
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 |
JP3496525B2 (ja) | 1998-07-09 | 2004-02-16 | 松下電工株式会社 | 電源装置 |
US6480818B1 (en) | 1998-11-13 | 2002-11-12 | Cray Inc. | Debugging techniques in a multithreaded environment |
WO2000078120A2 (en) * | 1999-06-21 | 2000-12-28 | Bops Incorporated | Methods and apparatus for initiating and resynchronizing multi-cycle simd instructions |
NO20001655L (no) * | 2000-03-30 | 2001-10-01 | Ericsson Telefon Ab L M | Implementering av flere tilstandsmaskiner i samme prosess |
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 |
US6526491B2 (en) | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
US6968546B2 (en) | 2001-03-30 | 2005-11-22 | Intel Corporation | Debugging support using dynamic re-compilation |
-
2002
- 2002-10-24 US US10/280,242 patent/US7222332B2/en not_active Expired - Fee Related
-
2003
- 2003-10-17 CN CNB2003101014291A patent/CN100414517C/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100375067C (zh) * | 2005-10-28 | 2008-03-12 | 中国人民解放军国防科学技术大学 | 异构多核微处理器局部空间共享存储方法 |
CN101351776B (zh) * | 2005-12-30 | 2014-06-25 | 英特尔公司 | 用于管理存储器访问的装置、产品、方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US7222332B2 (en) | 2007-05-22 |
US20040083455A1 (en) | 2004-04-29 |
CN100414517C (zh) | 2008-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1499379A (zh) | 针对异构体系结构的在集成可执行程序内进行覆盖管理的方法和设备 | |
CN1179276C (zh) | 配置不同的高速缓存分区以具有不同属性的系统和方法 | |
CN1292342C (zh) | 在集成可执行程序中访问全局变量的系统和装置 | |
CN100343809C (zh) | 中间代码执行系统和中间代码执行方法 | |
EP0752645B1 (en) | Tunable software control of Harvard architecture cache memories using prefetch instructions | |
US6760818B2 (en) | Memory region based data pre-fetching | |
US8196129B2 (en) | Adaptive class loading | |
JP5147280B2 (ja) | 異機種マルチプロセッサ・システムにおけるガーベッジ・コレクションのためのシステムおよび方法 | |
EP2542973B1 (en) | Gpu support for garbage collection | |
CN1304962C (zh) | 转译后备缓冲器清除滤波器 | |
US4991088A (en) | Method for optimizing utilization of a cache memory | |
US10007605B2 (en) | Hardware-based array compression | |
US8473900B2 (en) | Combining classes referenced by immutable classes into a single synthetic class | |
EP0838755A2 (en) | Binary program conversion apparatus and method | |
US9086920B2 (en) | Device for managing data buffers in a memory space divided into a plurality of memory elements | |
CN1266589C (zh) | 多重高速缓冲存储器线写回和作废技术 | |
CN1504881A (zh) | 爪哇执行设备和爪哇执行方法 | |
CN1613054A (zh) | 控制指令集体系结构之间的二进制编码翻译的兼容水平 | |
CN1173262C (zh) | 虚拟机指令的优化字节码解释器 | |
CN1855033A (zh) | 可避免写后读的危险的存储器指令的发出和执行 | |
WO2017017695A1 (en) | Wand: concurrent boxing system for all pointers with or without garbage collection | |
CN102667714A (zh) | 支持访问由操作系统环境外的资源提供的功能的方法和系统 | |
JP2006323844A (ja) | ジャバ仮想マシンでバイトコードの実行時間を短縮するシステム及び方法 | |
US8510529B2 (en) | Method for generating program and method for operating system | |
CN1945541A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080827 Termination date: 20101017 |