CN101996082B - 协处理器系统和在本地存储器上加载应用程序的方法 - Google Patents
协处理器系统和在本地存储器上加载应用程序的方法 Download PDFInfo
- Publication number
- CN101996082B CN101996082B CN200910168620.5A CN200910168620A CN101996082B CN 101996082 B CN101996082 B CN 101996082B CN 200910168620 A CN200910168620 A CN 200910168620A CN 101996082 B CN101996082 B CN 101996082B
- Authority
- CN
- China
- Prior art keywords
- loader
- data
- code
- loading zone
- description
- 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
- 238000011068 loading method Methods 0.000 title claims abstract description 85
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000011161 development Methods 0.000 abstract description 5
- 230000011218 segmentation Effects 0.000 description 34
- 230000008569 process Effects 0.000 description 12
- 238000013507 mapping Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 230000018109 developmental process Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 206010027476 Metastases Diseases 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000009401 metastasis Effects 0.000 description 2
- 101100172874 Caenorhabditis elegans sec-3 gene Proteins 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
- G06F9/3881—Arrangements for communication of instructions and data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/253—Centralized memory
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)
Abstract
本发明公开了一种协处理器系统以及在协处理器系统的本地存储器上加载应用程序的方法,其中,本地存储器包含加载区和非加载区,加载区中存储着加载器和应用程序的待加载可执行映象的描述数据,加载器包含可重定位代码,该方法包含:将可重定位代码和描述数据从加载区复制到非加载区;被复制到非加载区的可重定位代码根据描述数据加载所述待加载可执行映象。采用本发明系统和方法,可以在不占用额外存储空间的情况下,提高协处理器系统应用程序开发的灵活性。
Description
技术领域
本发明一般涉及协处理器系统,尤其涉及一种在协处理器系统的本地存储器上加载应用程序的方法。
背景技术
软件管理的本地存储器常用于基于协处理器(processor core)的混合体系结构,例如Cell/B.E.和某些DSP SoCs。图1示意性地表示一种混合体系结构100。图1中所示的多个协处理器(也称加速器)110每个都有自己的本地存储器120,也能访问与其它加速器共享的存储器140。加速器在主控处理器130的控制下协同工作,通过执行本地存储器中的代码,完成相应的功能。
这样的体系结构能够优化执行应用程序的性能,却也使应用开发变得复杂,其中要考虑的一个问题是代码加载。众所周知,由于种种限制,本地存储器的容量一般很小,可能远远低于复杂的应用程序的代码和数据的大小。通常要把应用程序的代码划分为多个较小的计算段(stages),将数据划分为较小的数据块,使每个计算段连同一个或多个相关数据块能装入本地存储器。在将代码划分为多个计算段的情况下,需要代码加载器(亦称代码加载程序)将各个计算段链接起来,以便在一个计算段完成之后继续执行下一个计算段。
存在采用不同工作方式的加载器,例如主机侧应用加载器和处理器(或加速器)侧应用加载器。在主机侧应用加载器方式中,加载器位于主控处理器130上,所以不占用加速器的本地存储器的空间。但是,由于控制要在加速器与控制处理器之间频繁切换,因此耗费时间。
在加速器侧应用加载器方式中,加载器由加速器或协处理器110控制。常用的加速器侧应用加载器包括代码重复占位(overlay)加载器(下文也简称“overlay加载器”)和常驻应用加载器(简称“常驻加载器”)。overlay加载器方式中,为重复占位存储段保留的存储空间,不能被其它功能使用,并且需要修改编译程序和链接工具,因而增加了实现的复杂度和成本。常驻应用加载器中,链接到被加载应用程序中的常驻加载器必须是相同的,并且必须被映射到目标存储器即本地存储器中相同的地址,因而不够灵活。
发明内容
协处理器系统的代码加载的灵活性,影响应用开发的方式和性能。为此,本发明提出了一种改进的应用程序代码加载方法。
按照本发明的一个方面,提供一种在协处理器系统的本地存储器上加载应用程序的方法,其中,本地存储器包含加载区和非加载区,加载区中存储着加载器和应用程序的待加载可执行映象的描述数据,加载器包含可重定位代码,该方法包含:将可重定位代码和描述数据从加载区复制到非加载区;被复制到非加载区的可重定位代码根据描述数据加载所述待加载可执行映象。
按照本发明的另一个方面,提供一种协处理器系统,所述协处理器系统包含协处理器的本地存储器,其中,本地存储器中设置有包含可重定位代码的加载器,所述加载器被配置得将加载器的可重定位代码和应用程序的可执行映象的描述数据,从本地存储器的加载区复制到本地存储器的非加载区,由复制到非加载区的可重定位代码根据描述数据加载所述可执行映象。通过利用本地存储器中在加载时原本不需要的非加载区来放置加载器,加载器的位置无需受到严格的限制,本发明的方法和系统在不占用额外的存储空间的情况下,可以提高应用程序开发的灵活性。
附图说明
通过对附图中所示的本发明示例实施例的更详细描述,将使本发明的上述、以及其它目的、特征和优势变得更加明显;附图中相同或类似的标记,一般表示本发明示例性实施例中的相同或相类似的部件或部分。
图1示意性地表示一种可以在其中实施本发明技术方案的体系结构;
图2示意性地表示应用程序的可执行映象及其加载前后的地址映射关系;
图3示意性地表示代码重复占位加载器方式中的可执行映象与本地存储器的映射;
图4示意性地表示重复占位加载的工作方式;
图5示意性地表示常驻加载器的可执行映象和地址映射;
图6示意性表示按照本发明一个实施例的加载器运行时本地存储器的布局;
图7示意性地表示按照本发明方法的一个实施例加载应用程序的过程。
具体实施方式
将参照附图更加详细地描述本发明的实施方式,在附图中显示了本发明的实施例。然而,本发明可以以各种形式实现,而不应该理解为受到所描述的实施方式的限制。提供这些实施例是为了更加透彻和完整地阐述本发明,使所述技术领域的普通技术人员能了解本发明的实质。
本发明提出一种在协处理器系统的本地存储器上加载应用程序的方法。发明人发现,就应用程序的加载而言,本地存储器可分为加载区和非加载区。加载区用于放置被加载的可执行映象的对应代码和数据;非加载区是通常为加载可执行映象而移动代码和数据时不会触及的存储区,要在可执行映象被加载后才进行初始化或在应用程序运行时存储动态数据。非加载区的一个例子是堆栈。
为了更好地理解本发明,首先说明现有技术中的一些代码加载的方式。这些方式中的一些通用概念和技术实现细节,可以直接适用于本发明的具体实现,或者稍加改造就能适用于本发明的具体实现,因此,对这些方式的描述和理解,可以避免在描述本发明及其实施方式本身时对按照现有技术就可以实现的技术细节作不必要的描述。
首先参看图2。图2示意性地表示应用程序的可执行映象及其加载前后的地址映射关系。
应用程序的可执行映象(executable image,本文中亦简称“可执行映象”)是一种含有应用程序或应用程序计算段的代码和相应数据的数据结构,由一系列分段和地址映射图(maps)表示(在对于所属技术领域的技术人员来说上下文清楚的情况下,本文中有时用“计算段”表示对应的“可执行映象”,反之亦然)。图2左侧示意性地表示一例应用程序的可执行映象。如图所示,典型的应用程序的可执行映象包含代码分段和数据分段,后者又可分为只读数据分段和可变数据分段;地址映射图(未予示出)规定了各分段在应用程序将被加载到的目标存储器空间中的地址。图2右侧表示目标存储器(亦称“本地存储器”)的布局,如图2右侧以及图中的箭头所示,在执行应用程序时,应用程序加载器或加载程序(下文亦称“加载器”“代码加载器”)按照可执行映象中的地址映射图,把这些分段的内容复制到目标存储器的存储单元中。加载器可以在空白存储区中设置其它数据分段,例如用于容纳应用程序的动态数据结构的堆栈;然而加载器一般不会改变堆栈区的内容。
在应用程序的执行期间,代码分段和只读数据分段的内容不变;可变数据分段被可执行映象中的对应分段的内容初始化,在应用程序的执行期间可以改变。堆栈区的内容,则在应用程序运行时才被动态数据结构覆写。
如上文所述,重复占位(overlay)加载器是一种加速器侧应用加载器,在overlay加载器方式下,在本地存储器中有一个应用程序加载器,亦称overlay管理器(重复占位管理器)OM。图3示意性地表示overlay加载器方式中的可执行映象与本地存储器的映射。如图3左侧所示,应用程序被划分成一个主分段和多个重复占位分段(图中只示意性地表示两个重复占位分段Seg-1和Seg-2)。重复占位分段Seg-1和Seg-2分别对应两个不同的计算段M和N,分别由代码和相应的只读数据组成。主分段是用于链接应用程序的不同计算段(例如M和N)的逻辑。图3左侧顶部所示的,是主分段以及重复占位分段Seg-1和Seg-2的可变数据。
如图3右侧所示,本地存储器至少包含三个存储段。第一个存储段Sec-1用于存储主分段和驻留的overlay管理器OM Seg-0。第二个存储段Sec-2是重复占位存储段(overlay section),用于反复地放置应用程序的不同计算段(M、N)的重复占位分段,就是说,在一个时间放置计算段M的重复占位分段Seg-1,在另一个时间放置计算段N的重复占位分段Seg-2,第二个存储段的大小,必须设置得足以容纳应用程序的所有重复占位分段(Seg-1、Seg-2)中最大的重复占位分段。第三个存储段Sec-3用于放置可变数据,也驻留在本地存储器中。
所述技术领域的技术人员应当明白,可以有各种方式来表示重复占位分段与重复占位存储段之间的映射。例如,可以用链接脚本来将一个应用程序的所有重复占位分段Seg-1、Seg-2映射到本地存储器的重复占位存储段Sec-2。在启动一个应用程序时,一开始要在本地存储器的第一个存储段Sec-1中加载应用程序的主分段和overlay管理器OM,并加载应用程序的可变数据,然后把控制转移给主分段,主分段调用overlay管理器OM将应用程序的第一个计算段加载到重复占位存储段Sec-2,将控制转移给第一个计算段,应用程序开始运行应用程序。
图4示意性地表示重复占位加载的工作方式。图中自左向右表示在第N个计算段后加载第N+1个计算段的过程。第N个计算段的代码在完成执行后,将控制转移到主分段(箭头41)。然后,主分段调用overlay管理器OM加载下一个(即第N+1个)计算段对应的重复占位分段(箭头42)。overlay管理器OM完成加载后,将控制转移到新加载的第N+1个计算段对应的重复占位分段(箭头43),于是,第N+1个计算段开始执行。
图4也显示,overlay加载器方式中,重复占位存储段的大小必须足以容纳应用程序的所有重复占位分段中最大的重复占位分段,并且,为重复占位存储段保留的存储空间,不能被其它功能使用,即使某个时刻的重复占位分段(例如计算段N的重复占位分段)实际只占用这个存储空间的一小部分也是如此;此外,overlay加载器方式还需要修改编译程序和链接工具。
另一种加速器侧应用加载器是常驻应用加载器或常驻加载器。图5示意性地表示常驻加载器的可执行映象和存储器地址映射。所属技术领域的技术人员知道,常驻加载器在第一次被加载到加速器的本地存储器后,就驻留在本地存储器上。图5中左边和右边分别表示两个不同的可执行映象A和B,中间表示在同一个本地存储器的地址映射,该图清楚地表示,常驻加载器方式的使用,有着严格的限制条件:链接到可执行映象中的常驻加载器必须是相同的,并且必须被映射到本地存储器中相同的地址,一般位于目标存储器的开始。当常驻加载器加载一个新的可执行映象时,它只加载含有新应用程序的代码和数据的部分。然而,如果要被加载的应用程序要被不同的加载器加载,或者要加载到不同的地址,则不能采用常驻加载器,这是因为,被加载的可执行映象将覆盖常驻加载器本身,使其不能完成加载任务。
在以上说明的基础上,下文结合图1和其它附图进一步详细地说明本发明及其实施方式。
图1是可以在其中实施本发明实施例的一种体系结构。前文已经指出,在图1所示的体系结构中的本地存储器120,在代码加载时可区分为加载区和非加载区。加载区用于放置被加载的可执行映象的对应代码和数据;非加载区例如堆栈,是加载可执行映象而移动代码和数据时不会触及的存储区,要在可执行映象被加载后才进行初始化或在应用程序运行时存储动态数据。本发明提出的在协处理器的本地存储器上加载应用程序的方法,利用了非加载区的特点。
图6示意性表示按照本发明一个实施例的加载器运行时本地存储器120的布局。图6左侧所示的是一个应用程序的一个计算段N正在运行时本地存储器中的布局。图中可见,本地存储器分为两个部分,加载区680和非加载区690。
如图6左侧所示,加载区680中,除了当前计算段N的代码N外,还存储着本发明的加载器LD和一个可执行映象或计算段N+1的描述数据N+1,其中,在代码区681中存储着加载器LD,在数据区682中,除了当前计算段N的数据N外,还存储着可执行映象N+1的描述数据N+1。如图所示,加载器LD中包含可重定位代码RC。所述技术领域的技术人员知道,可重定位代码是一种不依赖于存储位置的代码(PICposition independent code),特点是其内部寻址方式不因代码在存储器中的存储位置的改变而改变,因此,可重定位代码在存储器中改变存储位置时,无需重新定位也能执行。
按照本发明的一个实施例,当要加载所述可执行映象N+1时,加载器将可重定位代码RC从当前位置复制到非加载区690,如箭头S621所示;将可执行映象N+1的描述数据N+1从当前位置复制到非加载区690,如箭头S622所示。结果,可重定位代码RC和描述数据被复制到非加载区690。描述数据N+1例如含有可执行映象N+1在共享存储器140中的地址,以及可执行映象中数据N+1和代码N+1在本地存储器120中的位置可重定位代码RC根据描述数据就能够在共享存储器140中定位到可执行映象N+1并将其装入本地存储器120中的正确位置。所属技术领域的技术人员应当明白,在具体实施时,本发明的描述数据可以有各种各样的实现,例如图3所示的主分段,就可以用作本发明的描述数据的一种简单实现。
然后,如箭头S630所示,非加载区690中的可重定位代码RC根据描述数据,执行对可执行映象N+1的实际加载。
图6右侧所示的,是可重定位代码RC执行对可执行映象N+1的实际加载后,本地存储器120的布局。图中显示,现在,在本地存储器120的加载区的代码区和数据区中,分别装入了下一个应用程序计算段N+1的代码段和相关的数据段,即可执行映象N+1对应的代码N+1和数据N+1。
按照本发明的一个实施例,存储着加载器的可重定位代码RC和可执行映象N+1的描述数据的非加载区690,可以是下一个计算段N+1在执行时才要使用的堆栈N+1,如图6右侧所示。这样,虽然在加载过程中,加载区680中的加载器被下一个计算段N+1的代码段逐渐覆盖,但是由于对下一个计算段N+1执行实际加载的,是位于堆栈N+1中的加载器可重定位代码RC,而堆栈N+1在加载过程中不会被其它内容覆盖,所以堆栈N+1中的加载器可重定位代码RC可以正常执行并完成实际的加载任务。
图6左侧显示,加载区680中除了加载器LD和可执行映象N+1的描述数据N+1外,还存储着代码N和数据N。但是,加载区680中也可能尚未存储任何应用程序的代码和数据。所述技术领域的技术人员应当明白,在最初启动一个应用程序时,可以由加速器110或主控处理器130对本地存储器进行初始化,在初始化过程中装入加载器LD以及该应用程序的第一个计算段对应的可执行映象的描述数据。此时,加载区680没有存储应用程序的任何计算段的代码和数据。在按照本发明方法加载了第一个计算段后,加载区680才开始存储代码和数据。
当如图6左侧所示,加载区680中还存储着代码N和数据N时,表明应用程序正处于执行过程中的情形,即当前正在运行应用程序的一个计算段N。
在这种情形中,描述数据所表示的可执行映象N+1,通常是所述计算段N之后的下一个计算段N+1的可执行映象。
但是,描述数据所表示的可执行映象N+1,也可以是与当前运行的应用程序不同的另一个应用程序的一个计算段的可执行映象。例如,计算段N是当前运行的应用程序的最后一个计算段,该计算段N完成时,要调用另一个应用程序,此时,可执行映象N+1可以是另一个应用程序的第一个计算段。需要指出的是,由于不同的应用程序可能是独立开发和编译的,因此可能使用不同的加载器,因此,当前位于加载区680中的加载器,可能与加载当前运行的应用程序的加载器不同。在应用程序加载过程中,可以采用不同的加载器,这是本发明的一个显著特点。
按照本发明的一个实施方式,如果当前运行着应用程序的一个计算段,则该计算段在完成执行时,调用加载器将可重定位代码RC和描述数据从各自的当前位置复制到非加载区690。在具体实施时,通过在当前计算段的结尾处插入一条调用命令,即可实现。具体细节是所述技术领域的技术人员容易实现的,因此无需赘述。
按照本发明的一个实施方式,当如箭头S630所示,非加载区690中的可重定位代码RC执行对可执行映象N+1的实际加载时,还将与可执行映象N+1相链接的加载器和下一个可执行映象的描述数据,存储到本地存储器,该加载器可用于加载下一个可执行映象,此时的本地存储器布局,类似于图6左侧的样子
所述技术领域的技术人员知道,可以将加载器存储在一个称作加载库的库文件中,并在加载库中记载每个加载器与要由该加载器加载的应用程序或应用程序计算段的对应关系,由此就可以建立可执行映象与加载器的链接关系。
按照本发明的一个实施方式,在加载器中除了可重定位代码RC外,还可配置一个单独的代码转移器,用于具体将重定位代码RC和描述数据从各自的当前位置复制到非加载区。
按照本发明的一个实施方式,在加载器中除了可重定位代码RC和代码转移器外,还可配置一个应用程序接口API,作为与本地存储器上运行的应用程序进行交互的接口,由此,正在运行的应用程序的计算段可以通过API来调用加载器执行加载任务。
下面结合图7,描述按照本发明在协处理器110的本地存储器140上加载应用程序的方法的一个实际的过程。
图7示意性地表示按照本发明方法的一个实施例加载应用程序的实际过程。图7与图6中的区别,主要是在左侧图中细化了加载器LD的功能,即表示了如上文所述的应用程序接口和代码转移器;另外,增加了一些箭头,以表示一个更接近实际的加载过程的步骤。
如上文所述,在本实施例中,应用程序接口API用于被本地存储器中的应用程序调用,以加载新的应用程序;代码转移器用于把实际的加载器代码以及描述待加载的可执行映象的描述数据,移动到非加载区690,在本实施例中的堆栈区中的可重定位代码,用于加载可执行映象,其中,可重定位代码用一段PIC(独立于位置的代码)来实现,可以从本地存储器一个存储位置移动到另一个存储位置。
假设加载过程从步骤S710开始,此时,当前运行的应用程序计算段N执行完成,于是调用加载器LD,即通过调用应用程序接口API,来调用加载器LD。应用程序计算段N可以以数据区682中的下一个计算段N+1的可执行映象的描述数据N+1为参数,调用加载器LD。
下一步,如箭头S721、S722所示,API调用代码转移器,将加载器的可重定位代码RC以及描述数据N+1,分别从本地存储器中各自的当前位置复制到堆栈区690。
步骤S730,堆栈区中的可重定位代码RC执行实际的加载。
按照本发明的一个实施例,加载器可重定位代码RC按照下述方式执行实际的加载:
-根据堆栈区中的描述数据,把下一个可执行映象或计算段N+1的代码N+1,加载到本地存储器的代码区681中;
-根据堆栈区中的描述数据,把下一个可执行映象N+1的数据N+1,加载到本地存储器的数据区682中;
-为该下一个可执行映象N+1的可变数据(未予示出)进行初始化。
步骤740,可重定位代码RC执行实际的加载后,跳转到下一个计算段的代码N+1的入口。
于是,代码N+1将被本地存储器140对应的协处理器110执行,直到应用程序完成其功能,或者如上所述地继续加载要执行的下一个计算段。
按照与上文所述的本发明方法相同的构思,本发明还提供一种协处理器系统。这样的协处理器系统与如附图1中所示的系统100基本相同,即包含一个或多个协处理器110和相应的本地存储器120。按照本发明,还为协处理器系统设置可重定位加载器,即包含执行实际加载的可重定位代码RC的加载器LD,所述加载器被配置得将加载器的可重定位代码和应用程序可执行映象的描述数据,从本地存储器的加载区680复制到本地存储器的非加载区690,由复制到非加载区690的可重定位代码根据描述数据加载所述可执行映象。
所述技术领域的技术人员应当明白,根据说明书的描述,可以在本发明的协处理器系统上配置实施所述的本发明方法的各种实施方式的功能,因此在此不再重复说明具体细节。
以上参照附图描述了本发明及其示例性实施例,但是应该理解本发明并不严格限于这些实施例,本领域普通技术人员能对实施例进行各种变化和修改而不超出本发明的范围。
所属技术领域的技术人员知道,本发明可以体现为装置、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻留软件、微代码等)。此外,本发明还可以采取体现在任何有形的表达介质中的计算机程序产品的形式,该介质中包含计算机可用的程序码。
可以使用一个或多个计算机可用的或计算机可读的介质的任何组合。计算机可读介质的更具体的例子(非穷举的列表)包括-但不限于-以下:有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、诸如支持因特网或内部网的传输介质、或者磁存储器件。注意计算机可用的或计算机可读的介质甚至可以是上面印有程序的纸张或者其它合适的介质,这是因为,例如可以通过电扫描这种纸张或其它介质,以电子方式获得程序,然后以适当的方式加以编译、解释或处理,并且必要的话在计算机存储器中存储。
用于执行本发明的操作的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言--诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言--诸如”C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络--包括局域网(LAN)或广域网(WAN)--连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。
此外,本发明的流程,可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现本发明实施例的流程的功能/操作的装置。
也可以把这些计算机程序指令存储在能指令计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括本发明实施例的流程的功能/操作的指令装置的制造品,
也可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其它可编程装置上执行的指令就提供实现本发明实施例的流程的功能/操作的过程。
Claims (19)
1.一种在协处理器系统的本地存储器上加载应用程序的方法,其中,本地存储器包含加载区和非加载区,加载区中存储着加载器和应用程序的待加载可执行映象的描述数据,加载器包含可重定位代码,该方法包含:
将可重定位代码和描述数据从加载区复制到非加载区;
被复制到非加载区的可重定位代码根据描述数据把所述待加载可执行映象的代码和数据复制到加载区,并为复制到加载区的数据中的可变数据进行初始化。
2.权利要求1所述的方法,其中,加载区中还存储着应用程序计算段,所述待加载可执行映象对应于所述应用程序计算段之后的下一个计算段。
3.权利要求1所述的方法,其中,加载区中还存储着应用程序计算段,所述待加载可执行映象对应于与所述应用程序计算段所属应用程序不同的另一个应用程序的计算段。
4.权利要求1-3中的任何一个所述的方法,进一步包括在本地存储器上装入下一个待加载可执行映象的描述数据和与下一个待加载可执行映象相关联的加载器。
5.权利要求2或3所述的方法,其中,所述应用程序计算段调用加载器将可重定位代码和描述数据从加载区复制到非加载区。
6.权利要求5的方法,其中,加载器包含应用程序接口,并且其中,所述应用程序计算段通过所述应用程序接口调用加载器。
7.权利要求5所述的方法,其中,加载器包含代码转移器,并且其中所述应用程序计算段调用加载器将可重定位代码和描述数据从加载区复制到非加载区包含由所述代码转移器将可重定位代码和描述数据从加载区复制到非加载区。
8.权利要求6所述的方法,其中,加载器包含代码转移器,并且其中所述应用程序计算段调用加载器将可重定位代码和描述数据从加载区复制到非加载区包含由所述代码转移器将可重定位代码和描述数据从加载区复制到非加载区。
9.权利要求1所述的方法,进一步包含从被复制到非加载区的可重定位代码跳转到加载后的可执行映象的入口。
10.权利要求1-3中任何一个所述的方法,其中,所述可重定位代码是不依赖于存储位置的代码。
11.权利要求1-3中任何一个所述的方法,其中,所述非加载区是堆栈区。
12.一种协处理器系统,包含协处理器的本地存储器,其中,本地存储器中设置有包含可重定位代码的加载器,所述加载器被配置为将加载器的可重定位代码和应用程序的可执行映象的描述数据,从本地存储器的加载区复制到本地存储器的非加载区,由复制到非加载区的可重定位代码根据描述数据把所述可执行映象的代码和数据复制到加载区,并为复制到加载区的数据中的可变数据进行初始化。
13.权利要求12所述的系统,其中,本地存储器的加载区中还存储着应用程序计算段,所述可执行映象对应于所述应用程序计算段之后的下一个计算段。
14.权利要求12所述的系统,其中,加载区中还存储着应用程序计算段,所述可执行映象对应于与所述应用程序计算段所属应用程序不同的另一个应用程序的计算段。
15.权利要求13或14所述的系统,包括用于由所述应用程序计算段调用加载器将可重定位代码和描述数据从加载区复制到非加载区的装置。
16.权利要求15所述的系统,其中,加载器进一步包含应用程序接口API,所述用于由所述应用程序计算段调用加载器将可重定位代码和描述数据从加载区复制到非加载区的装置,进一步包含由所述应用程序计算段通过API调用加载器的装置。
17.权利要求15所述的系统,其中,加载器进一步包含代码转移器,并且,调用加载器将可重定位代码和描述数据从加载区复制到非加载区的装置,包含由所述代码转移器将可重定位代码和描述数据从加载区复制到非加载区的装置。
18.权利要求12-14中任何一个所述的系统,进一步包括用于在本地存储器上装入下一个可执行映象的描述数据和与下一个可执行映象相关联的加载器的装置。
19.权利要求12-14中任何一个所述的系统,其中,所述非加载区是堆栈区。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910168620.5A CN101996082B (zh) | 2009-08-28 | 2009-08-28 | 协处理器系统和在本地存储器上加载应用程序的方法 |
US12/869,164 US8893127B2 (en) | 2009-08-28 | 2010-08-26 | Method and system for loading application to a local memory of a co-processor system by using position independent loader |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910168620.5A CN101996082B (zh) | 2009-08-28 | 2009-08-28 | 协处理器系统和在本地存储器上加载应用程序的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101996082A CN101996082A (zh) | 2011-03-30 |
CN101996082B true CN101996082B (zh) | 2014-06-11 |
Family
ID=43626758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910168620.5A Expired - Fee Related CN101996082B (zh) | 2009-08-28 | 2009-08-28 | 协处理器系统和在本地存储器上加载应用程序的方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8893127B2 (zh) |
CN (1) | CN101996082B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495738A (zh) * | 2011-10-31 | 2012-06-13 | 深圳市五巨科技有限公司 | 移动终端及其应用程序运行方法 |
CN112988338B (zh) * | 2019-12-12 | 2022-12-20 | Oppo广东移动通信有限公司 | 应用切换方法、装置、存储介质及电子设备 |
CN111831351A (zh) * | 2020-06-24 | 2020-10-27 | 平安普惠企业管理有限公司 | 基于图像分析的页面加载方法、装置和计算机设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR940007680A (ko) | 1992-09-30 | 1994-04-27 | 로버트 에이. 에셀만 | 메모리 할당 요구의 축소 방법 및 시스템 |
US20040168078A1 (en) * | 2002-12-04 | 2004-08-26 | Brodley Carla E. | Apparatus, system and method for protecting function return address |
US7673304B2 (en) * | 2003-02-18 | 2010-03-02 | Microsoft Corporation | Multithreaded kernel for graphics processing unit |
US8010734B2 (en) * | 2004-06-04 | 2011-08-30 | Broadcom Corporation | Method and system for reading instructions from NAND flash memory and writing them into SRAM for execution by a processing device |
JP4963018B2 (ja) * | 2005-08-15 | 2012-06-27 | 株式会社ソニー・コンピュータエンタテインメント | スケジューリング方法およびスケジューリング装置 |
CN101373434B (zh) * | 2007-08-22 | 2012-01-25 | 国际商业机器公司 | 在多处理器系统中快速加载和运行程序映像的方法和系统 |
CN101387969B (zh) * | 2008-10-16 | 2011-04-13 | 上海交通大学 | 软硬件协同设计的动态二进制翻译方法 |
-
2009
- 2009-08-28 CN CN200910168620.5A patent/CN101996082B/zh not_active Expired - Fee Related
-
2010
- 2010-08-26 US US12/869,164 patent/US8893127B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101996082A (zh) | 2011-03-30 |
US8893127B2 (en) | 2014-11-18 |
US20110055833A1 (en) | 2011-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5295379B2 (ja) | 組み込みプラットフォームにおけるプログラムの動的リンキング方法および組み込みプラットフォーム | |
US11175896B2 (en) | Handling value types | |
CN102741828B (zh) | 对计算机平台的异构处理器的双向通信支持 | |
KR101581796B1 (ko) | 컴퓨팅 플랫폼의 이종 프로세서들 간의 공유 가상 메모리에서의 가상 함수들의 공유 | |
CN102298535B (zh) | 绑定数据并行设备源代码 | |
WO2021000970A1 (zh) | 深度学习算法的编译方法、装置及相关产品 | |
KR101650424B1 (ko) | 기점 가상 머신으로부터 목적지 가상 머신으로의 동작 전송 | |
CN102566980B (zh) | 可扩展的数据并行语义 | |
US8176142B2 (en) | Shared JAVA jar files | |
JP6432450B2 (ja) | 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム | |
US20170083301A1 (en) | Nested communication operator | |
US10635472B2 (en) | Import mechanism for hardware intrinsics | |
CN101847096B (zh) | 包含栈变量函数的优化方法 | |
CN101996082B (zh) | 协处理器系统和在本地存储器上加载应用程序的方法 | |
RU2510073C2 (ru) | Управление дескриптором типа для замороженных объектов | |
US20160259657A1 (en) | Dynamically binding data in an application | |
US7685397B2 (en) | Apparatus and method for managing stacks in virtual machine | |
CN112818176B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
JP2022140995A (ja) | 情報処理装置、コンパイルプログラムおよびコンパイル方法 | |
Spacek | A proposal to establish a pseudo virtual memory via writable overlays | |
KR100884926B1 (ko) | 가상 메모리가 없는 임베디드 시스템에서의 기존 공유라이브러리 사용방법 | |
WO2021000638A1 (zh) | 深度学习算法的编译方法、装置及相关产品 | |
CN117076052A (zh) | 模式跳转方法、装置、电子设备及存储介质 | |
Inglés-Romero et al. | A Component-Based Architecture Template for Adaptive System Design | |
CN113535137A (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 | ||
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: 20140611 Termination date: 20200828 |