CN100414517C - 异构体系结构中的覆盖生成、管理的方法和设备 - Google Patents

异构体系结构中的覆盖生成、管理的方法和设备 Download PDF

Info

Publication number
CN100414517C
CN100414517C CNB2003101014291A CN200310101429A CN100414517C CN 100414517 C CN100414517 C CN 100414517C CN B2003101014291 A CNB2003101014291 A CN B2003101014291A CN 200310101429 A CN200310101429 A CN 200310101429A CN 100414517 C CN100414517 C CN 100414517C
Authority
CN
China
Prior art keywords
root module
code
subregion
data
module
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
Application number
CNB2003101014291A
Other languages
English (en)
Other versions
CN1499379A (zh
Inventor
迈克尔·K·格史温德
凯思琳·M.·欧布莱恩
约翰·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 CN1499379A publication Critical patent/CN1499379A/zh
Application granted granted Critical
Publication of CN100414517C publication Critical patent/CN100414517C/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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/453Data 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_A1代码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 (22)

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. 一种用于创建覆盖以在异构指令集体系结构中操作的处理器,包括:
用于将信息分为至少两个分区的部分和至少一个未分区的部分的装置;
用于将至少一个未分区的部分的目标指向第一执行环境的装置;
用于将许多分区的目标指向第二执行环境的装置;
用于从至少一个分区部分生成至少两个覆盖部分的装置;
将许多分区部分彼此绑定的装置;
用于创建一个与预先绑定的许多分区和覆盖部分关联的根模块的装置,根模块可用来在第一和第二执行环境之间交换至少两个覆盖部分;
用于将预先绑定的许多分区部分绑定到至少一个未分区的部分的装置;以及
用于创建集成可执行程序的装置。
CNB2003101014291A 2002-10-24 2003-10-17 异构体系结构中的覆盖生成、管理的方法和设备 Expired - Fee Related CN100414517C (zh)

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 CN1499379A (zh) 2004-05-26
CN100414517C true 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)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
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
US7886269B2 (en) * 2005-04-29 2011-02-08 Microsoft Corporation XML application framework
US7581225B2 (en) * 2005-04-29 2009-08-25 Microsoft Corporation Multithreading with concurrency domains
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
US8132148B2 (en) 2005-04-29 2012-03-06 Microsoft Corporation XML application framework
US20060245096A1 (en) * 2005-04-29 2006-11-02 Microsoft Corporation Application framework phasing model
US7761674B2 (en) * 2005-12-30 2010-07-20 Intel Corporation Identifier associated with memory locations for managing memory accesses
CN100375067C (zh) * 2005-10-28 2008-03-12 中国人民解放军国防科学技术大学 异构多核微处理器局部空间共享存储方法
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 삼성전자주식회사 코드 오버레이 생성 장치 및 방법
DE112011103505T5 (de) * 2010-12-16 2013-12-05 International Business Machines Corp. Verfahren zum Validieren von Laufzeitreferenzen
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
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
CN110874212B (zh) 2015-06-30 2021-08-20 华为技术有限公司 一种硬件加速方法、编译器以及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000078120A2 (en) * 1999-06-21 2000-12-28 Bops Incorporated Methods and apparatus for initiating and resynchronizing multi-cycle simd instructions
WO2001075601A1 (en) * 2000-03-30 2001-10-11 Telefonaktiebolaget Lm Ericsson (Publ) Efficient implementation of several independent state machines in the same process

Family Cites Families (33)

* 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
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
WO1999001819A1 (en) 1997-07-01 1999-01-14 Progress Software Corporation Testing 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
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000078120A2 (en) * 1999-06-21 2000-12-28 Bops Incorporated Methods and apparatus for initiating and resynchronizing multi-cycle simd instructions
WO2001075601A1 (en) * 2000-03-30 2001-10-11 Telefonaktiebolaget Lm Ericsson (Publ) Efficient implementation of several independent state machines in the same process

Also Published As

Publication number Publication date
US20040083455A1 (en) 2004-04-29
CN1499379A (zh) 2004-05-26
US7222332B2 (en) 2007-05-22

Similar Documents

Publication Publication Date Title
CN100414517C (zh) 异构体系结构中的覆盖生成、管理的方法和设备
EP0752645B1 (en) Tunable software control of Harvard architecture cache memories using prefetch instructions
US5889996A (en) Accelerator for interpretive environments
US6446254B1 (en) Packaging memory image files
US8108846B2 (en) Compiling scalar code for a single instruction multiple data (SIMD) execution engine
US5983310A (en) Pin management of accelerator for interpretive environments
US7243333B2 (en) Method and apparatus for creating and executing integrated executables in a heterogeneous architecture
CN1292342C (zh) 在集成可执行程序中访问全局变量的系统和装置
US7243195B2 (en) Software managed cache optimization system and method for multi-processing systems
CN100514294C (zh) 避免数据处理设备中的数据不一致性的方法和装置
US20040003377A1 (en) Converting byte code instructions to a new instruction set
CN100382028C (zh) 中间代码预处理、执行装置及执行系统及计算机程序产品
US20110113411A1 (en) Program optimization method
GB2348306A (en) Batch processing of tasks in data processing systems
US6829760B1 (en) Runtime symbol table for computer programs
CN102667714A (zh) 支持访问由操作系统环境外的资源提供的功能的方法和系统
US5404519A (en) System for extending software calls to functions on another processor by means of a communications buffer
US6301652B1 (en) Instruction cache alignment mechanism for branch targets based on predicted execution frequencies
JP2006323844A (ja) ジャバ仮想マシンでバイトコードの実行時間を短縮するシステム及び方法
CN1347525A (zh) 虚拟机指令的优化字节码解释器
CN100458606C (zh) 匹配用于控制工作过程的函数的方法和装置
US7240341B2 (en) Global constant pool to allow deletion of constant pool entries
US5848275A (en) Compiler having automatic common blocks of memory splitting
CN100465922C (zh) 高速缓冲存储器、处理器、系统、及高速缓冲分配方法
KR19990087830A (ko) 컴퓨터 장치, 컴파일러 방법 및 다중 캐시 라인 사전적재방법

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