CN1914597A - 处理单元的动态加载和卸载 - Google Patents
处理单元的动态加载和卸载 Download PDFInfo
- Publication number
- CN1914597A CN1914597A CNA2005800031390A CN200580003139A CN1914597A CN 1914597 A CN1914597 A CN 1914597A CN A2005800031390 A CNA2005800031390 A CN A2005800031390A CN 200580003139 A CN200580003139 A CN 200580003139A CN 1914597 A CN1914597 A CN 1914597A
- Authority
- CN
- China
- Prior art keywords
- program module
- local storage
- module
- programming
- program
- 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.)
- Pending
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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/169—Annotation, e.g. comment data or footnotes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/177—Editing, e.g. inserting or deleting of tables; using ruled lines
- G06F40/18—Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
提供了在处理环境中增强的指令处理的方法和装置。一程序引用可与一个或多个程序模块相关。这些程序模块可加载到本地存储器中,如代码和数据这样的信息可根据该程序引用从这些程序模块获得。根据现有的程序模块可生成新的程序模块。生成程序模块内的直接引用并避免程序模块间的间接引用能够优化新的程序模块。程序模块可基于一插入点被预先加载到本地存储器中。该插入点可统计确定。本发明特别有利于具有有限存储器数量的多处理系统。
Description
技术领域
本发明一般涉及计算机程序的执行。更具体地说,本发明涉及通过操作程序模块并根据目标模块在处理器的本地存储器中加载程序模块来改善程序的执行。
背景技术
计算机系统正变得越来越复杂,在获得越来越高的处理速度的同时缩减元件的尺寸及降低制造成本。这些改进对于很多应用程序如实时、多媒体游戏及其他计算加强的应用程序的成功是很关键的。经常,计算系统与并行(或一致)操作的多个处理器协作来增强处理的效率。
基本上,单个或多个处理器运行代码和/或数据(统称“信息”)。信息通常存储在主存储器中。该主存储器可以例如是与包含该处理器的芯片物理分离的动态随机存储存储器(DRAM)芯片。当该主存储器与该处理器物理或逻辑分离时,在访问包含在主存储器中的信息所需的时间之外,可能发生很大的延迟(长等待时间),该延迟可能达到几十或几百毫秒。长等待时间对处理不利,因为该处理器可能不得不空闲或暂停运行直到必要的信息已经从主存储器中被传送。
为了解决长等待时间的问题,很多计算机系统利用高速缓冲存储器。高速缓冲存储器是位于该处理器和主处理器之间的临时存储器。较之该主存储器,高速缓冲存储器通常具有很短的存取等待时间(短等待时间),但存储容量很小。使用时,高速缓冲存储器用于通过临时性的存储被重复存取的数据来改善处理性能。高速缓冲存储器的效率依赖于存取的位置。举例说明,利用一个“从9到1”的规则,其中90%的时间花在存取10%的数据上,从主存储器或外部存储器中检索很少量的数据的效率非常低,因为太多的时间花在了存取很少量的数据上。因此,经常使用的数据应该存储在高速缓冲存储器中。
传统的硬件高速缓冲存储器系统包含作为存储管理的基本单元的“高速缓冲存储器线”。高速缓冲存储器线最好选择具有高速缓冲存储器和主存储器间传输数据的大小。正如现有技术中已知的,高速缓冲存储器系统以特定的映射高速缓冲存储器线至主存储器的规则运行。例如,高速缓冲存储器“标记”被用于表示主存储器的哪一部分被存储在该高速缓冲存储器线中,以及主存储器那部分的状态。
除存储器存储之外另一个对程序的执行不利的影响是存储器的大小。主存储器可能太小而不能执行必要的操作。此时,通过利用外部的存储器,“虚拟存储器”可被用来提供比主存储器中现有的空间更大的系统地址空间。然而,外部存储器通常具有比主存储器更长的等待时间。
为了实现虚拟存储器,一般利用处理器的存储管理单元(MMU),该单元可以是该CPU的一部分或者是一个独立的部件。该MMU管理虚拟地址(该地址被程序软件使用)到存储器中物理地址的映射。该MMU能够检测什么时间对未绑定至一个物理地址的一个虚拟地址进行存取。当该存取发生时,该虚拟存储器管理软件被调用。如果该虚拟地址已经存储在外部存储器中,则它将被加载到主存储器中,并且一个该虚拟地址的映射将被建立。
在改进的处理器结构中,特别是多处理器结构中,各个处理单元可能具有本地存储器,补充主存储器的存储。这些本地存储器经常具有很高的速度,但有限的存储容量。在软件中使用的地址和本地存储器的物理地址之间没有虚拟化。这限制了处理器单元能够使用的存储器的数量。而该处理器单元可以通过直接存储器存取(DMA)控制器(DMAC)或其他硬件存取主存储器,没有硬件结构连接本地存储器地址空间和系统地址空间。
不幸的是,长等待时间的主存储器仍然会降低处理的效率,对于多处理器系统会产生严重的性能瓶颈。因此,需要增强的信息处理能力来克服该缺陷。本发明就是要解决这些及其他问题,并特别适用于具有严格的存储器约束的多处理器结构。
发明内容
根据本发明的一个具体实施方式,提供了一种管理具有本地存储器的处理装置的操作的方法。该方法包括,确定该本地存储器中是否已经加载了一程序模块,该程序模块与编程引用有关;如果该程序模块没有加载至该本地存储器则加载该程序模块至本地存储器;根据该编程引用从该程序模块中获取信息。
在另一实施例中,从该程序模块获得的信息包括数据和代码中的至少一种。在另一实施例中,该程序模块包括从主存储器加载至该本地存储器中的目标模块。然而在另一实施例中,该编程引用包括该程序模块中的直接引用。在另一实施例中,该编程引用包括一个至第二程序模块的间接引用。
在另一实施例中,该程序模块是第一程序模块,并且该方法进一步包括在主存储器中存储该第一程序模块和第二程序模块,其中该加载步骤包括从该主存储器中加载该第一程序模块至该本地存储器。此时,该编程引用可包括一个该第一程序模块内的直接引用。或者,该编程引用可以包括至该第二程序模块的间接引用。在该例子中,当信息从该第二程序模块获得时,该方法最好还包括步骤确定该第二程序模块是否已在本地存储器中加载;如果第二程序模块没有加载到本地存储器,则将第二程序模块加载至本地存储器;并提供该信息至第一程序模块。
根据本发明的另一实施方式,提供了一种管理具有本地存储器的处理装置内的操作的方法。该方法包括,从主存储器获取第一程序模块;从主存储器获取第二程序模块;确定该第一程序模块所使用的一个编程引用是否包括一个至该第二程序模块的间接引用;如果编程引用包括间接引用,则形成新的程序模块,该新的程序模块包括第一程序模块的至少一部分,这样该编程引用变成该新的程序模块的不同部分间的一个直接引用。
在一个替换例中,该方法还包括加载该新的程序模块至本地存储器的步骤。在另一实施例中,该第一和第二程序模块在形成该新的程序模块前被加载至本地存储器。在另一实施例中,该第一程序模块包括第一代码功能,该第二程序模块包括第二代码功能,该新的程序模块被形成以包括该第一和第二代码功能中的至少之一。此时,该第一程序模块最好还包括数据组,该新的程序模块被形成以进一步包括该数据组。
在另一替换例中,该编程引用是一个至该第二程序模块的间接引用,并且该方法还包括根据该第一程序模块所使用的编程引用确定该新的程序模块所使用的一个新的编程引用;其中该新的程序模块包括至少该第一程序模块的部分和至少该第二程序模块的部分,这样该新的编程引用是一个新的程序模块内的直接引用。
根据本发明的另一实施方式,提供了一种具有本地存储器的处理装置的处理操作的方法。该方法包括执行本地存储器中加载的第一程序模块;确定第二程序模块的插入点;在该第一程序模块执行期间在本地存储器中加载该第二程序模块;确定一预期执行时间以开始执行该第二程序模块;确定该第二程序模块的加载是否已完成;第一程序模块执行结束后执行该第二程序模块。
在一个替换例中,该方法还包括如果加载没有完成则延迟执行第二程序模块。此时,延迟执行最好包括执行一个或多个NOP直到加载完成。在另一实施例中,该插入点统计确定。在另一实施例中,该插入点的正确性根据运行时间状况确定。
根据本发明的另一个实施方式,提供了一种处理系统。该处理系统包括能够存储程序模块的本地存储器;和与该本地存储器连接的处理器。该处理器包括执行一种管理功能的逻辑,该管理功能包括关联一个编程引用和该程序模块;确定该程序模块是否当前已被加载至本地存储器;如果程序模块当前没有加载至本地存储器,则加载该程序模块至该本地存储器;并根据该编程引用从该程序模块获取信息。该本地存储器最好与该处理器集成在一起。
根据本发明的另一实施方式,提供了一种处理系统。该处理系统包括能够存储程序模块的本地存储器;和与该本地存储器连接的处理器。该处理器包括执行一种管理功能的逻辑,该管理功能包括在主存储器中存储第一和第二程序模块之一,从主存储器中加载选择的第一和第二程序模块之一至本地存储器,关联一程序模块与该选择的程序模块,根据该编程引用获取信息。最好该主存储器包括单片存储器。更好的是,该主存储器与该处理器集成在一起。
根据本发明的另一实施方式,提供了一种处理系统。该处理系统包括能够存储程序模块的本地存储器;和与该本地存储器连接的处理器。该处理器包括执行一种管理功能的逻辑,该管理功能包括从主存储器获取第一程序模块;从该主存储器获取第二程序模块;确定该第一程序模块使用的第一编程引用,形成包括该第一程序模块的至少一部分的新的程序模块,这样该第一编程引用变成一个该新的程序模块内的直接引用,并加载该新的程序模块至本地存储器中。
根据本发明的另一实施方式,提供了一种处理系统。该处理系统包括能够存储程序模块的本地存储器;和与该本地存储器连接的处理器。该处理器包括执行一种管理功能的逻辑,该管理功能包括确定第一程序模块的插入点,在该处理器执行第二程序模块期间在本地存储器中加载该第一程序模块,并在执行完第二程序模块及加载完成后执行第一程序模块。
根据本发明的另一实施方式,提供了一种存储处理器使用的程序的存储介质。该程序使得该处理器:识别与一个编程引用相关的程序模块;确定该程序模块当前是否已被加载至与该处理器相关的本地存储器中;如果程序模块当前没有加载至本地存储器,则加载该程序模块至本地存储器中;根据该编程引用从该程序模块中获取信息。
根据本发明的另一实施方式,提供了一种存储处理器使用的程序的存储介质。该程序使得该处理器:在主存储器中存储第一和第二程序模块;从主存储器中加载该第一程序模块至与该处理器相关的本地存储器中,该第一程序模块与一个编程引用相关;并根据该编程引用获取信息。
根据本发明的另一实施方式,提供了一种存储处理器使用的程序的存储介质。该程序使得该处理器从主存储器中获取第一程序模块;从该主存储器获取第二程序模块;确定该第一程序模块所使用的一个编程引用是否包括一个至该第二程序模块的一个间接引用;如果该编程引用包括间接引用,则形成一新的程序模块,该新的程序模块包括该第一程序模块的至少一部分,这样该编程引用成为一个与该新的程序模块相关的直接引用。
根据本发明的另一实施方式,提供了一种存储处理器使用的程序的存储介质。该程序使得该处理器执行能够加载在与该处理器相关的本地存储器中的第一程序模块;确定第二程序模块的插入点;在第一程序模块执行期间在本地存储器中加载该第二程序模块;确定一预期执行时间以开始第二程序模块的执行;确定该第二程序模块的加载是否已完成;第一程序模块执行结束后执行第二程序模块。
根据本发明的另一实施方式,提供了一种处理系统。该处理系统包括处理部分,该处理部分包括总线、处理单元和至少一个通过该总线与该处理单元相连的子处理单元。至少一个处理单元和该至少一个子处理单元用于确定一个编程引用是否属于第一程序模块,加载该第一程序模块至本地存储器,并根据该编程引用从该第一程序模块中获取信息。
根据本发明的另一实施方式,提供了一种计算机处理系统。该计算机处理系统包括用户输入设备;连接显示设备的显示接口;能够存储程序模块的本地存储器;和与该本地存储器连接的处理器。该处理器包括一个或多个处理部分。至少一个处理部分包括执行管理功能的逻辑,该管理功能包括确定一个编程引用是否属于第一程序模块,并加载该第一程序模块至该本地存储器,根据该编程引用从该第一程序模块获取信息。
根据本发明的另一实施方式,提供了一种计算机网络。该计算机网络包括通过通信网络彼此连接的多个计算机处理系统。每个计算机处理系统包括用户输入设备;连接显示设备的显示接口;能够存储程序模块的本地存储器;和与该本地存储器连接的处理器。该处理器包括一个或多个处理部分。至少一个处理部分包括执行管理功能的逻辑,该管理功能包括确定一个编程引用是否属于第一程序模块,并加载该第一程序模块至该本地存储器,根据该编程引用从该第一程序模块获取信息。最好,至少一种计算机处理系统包括一能够处理多媒体游戏应用程序的游戏单元。
附图说明
图1是表示根据本发明的方面使用的处理部分的示例性结构框图。
图2是用于本发明的处理部分的一多处理系统的示例性结构框图。
图3是表示一子处理单元的示例性结构框图。
图4A-B表示根据本发明的优选实施例的位于主存储器和本地存储器间的存储管理框图和相关的逻辑流程图。
图5A-B表示根据本发明的优选实施例的程序模块重组的框图。
图6A-B表示根据本发明的优选实施例的调用树重组框图。
图7A-B表示根据本发明的优选实施例的程序模块预载逻辑和框图。
图8表示根据本发明的计算机网络。
具体实施方式
在结合附图描述本发明的优选实施方式的过程中,为了描述更清楚而采用特定的术语。但本发明并不意味着限于所使用的特定术语,应该理解每一特定术语包括都可以以类似的方式实现类似的目的的所有技术等价物。
现在参考图1,这是根据本发明的方面可采用的基本处理模块或处理部分(“PE”)100的方框图。如图所示,该PE 100最好包括:I/O接口102、处理单元(“PU”)194、直接存储器存取控制器(“DMAC”)106、和多个子处理单元(“SPU”)108,即SPU 108a-108d。虽然示出了四个SPU 108a-108d,但该PE 100可包括任意数目的这样的设备。本地(或内部)PE总线120在PU 104、SPU 108、I/O接口102、DMAC 106和存储器接口110间传送数据和应用程序。本地PE总线120可以具有例如一个传统的结构或可以实施为一个分组交换网络。实施为一个分组交换网络,虽然需要更多的硬件,但增加了可用的带宽。该I/O接口102可通过I/O总线124连接至一个或多个外部I/O设备(未示出),如帧缓冲器、磁盘驱动器等。
PE 100可使用各种方法进行构建来实施数字逻辑。PE 100最好构建为硅基底上的利用CMOS技术的单个集成电路。PE 100通过高带宽存储器连接122与存储器130紧密连接。该存储器130最好作为PE 100的主存储器。在特定实施例中,该存储器130可嵌入或另外集成为包含该PE 100的处理器芯片的一部分,而不是作为一个独立的外部的“芯片外(off chip)”存储器。例如,该存储器130可处于该芯片内的一个独立的位置或者可与一个或多个包括该PE 100的处理器集成。虽然该存储器130最好是DRAM,但也可通过其他装置,如静态随机存取存储器(SRAM)、磁随机存取存储器(MRAM)、光存储器、全息存储器等来实现存储器130。DMAC 106和存储器接口110便于存储器130和PE 100的SPU 108和PU 104间的数据传输。
PU 104例如可以是能够独立处理数据和应用程序的标准处理器。在操作中,该PU 104由SPU 108安排和协调数据和应用程序的处理。在另一可选结构中,该PE 100可包括多个PU 104。每一PU 104可控制一个、所有或部分指定SPU 108组。SPU 108最好是单指令多数据(SIMD)处理器。在PU 104的控制下,该SPU 108可以并行和独立的方式执行数据和应用程序的处理。DMAC 106由PU 104和SPU 108控制对存储在共享存储器130中的数据和应用程序的存取。最好,多个PE,如PE 100,可连接或组合在一起,或者逻辑上互相连接来提供增强的处理功能。
图2示出了包括多个PE 200(PE 1,PE 2,PE 3,PE 4)的处理结构,该结构可根据本发明如下所述的方式进行操作。最好,该PE 200是单芯片。该PE 200可包括或不包括诸如以上关于图1的PE 100描述的PU和/或SPU的子系统。该PE 200可以是相同或不同的类型,这取决于所需处理的类型。例如,一个或多个PE 200可以是普通的微处理器、数字信号处理器、图形处理器、微控制器等。PE 200如PE 1可控制部分或全部PE 2、3和4的处理。
PE 200最好与共享总线202连接。存储器控制器或DMAC 206可通过存储器总线204与该共享总线202连接。该DMAC 206与存储器208连接,该存储器208可以具有如上关于存储器130所述的类型的任意一种。在特定实施例中,该存储器208可以嵌入或集成为包含一个或多个PE 200的该处理器芯片的一部分,不要是一个独立的芯片外部的存储器。例如,该存储器208可位于该芯片中的一个独立的位置,或可与一个或多个PE 200集成。I/O控制器212也可以通过I/O总线210与该共享总线202连接。该I/O控制器212可与一个或多个I/O设备214,如帧缓存器,磁盘驱动器等连接。
应该理解上述处理模块和结构仅仅是示例性的,本发明的各个方面还可以使用其他结构,包括但不仅限于2003年2月25日公开的、题为“宽带网络的计算机结构的存储器保护系统和方法(memory protection system and methodfor computer architecture for broadband networks)”的美国专利No.6,526,491,和2001年3月22日提交的、题为“宽带网络的计算机结构和软件单元(computer architecture and software cells for broadband networks)”的美国专利No.09/816,004,中披露的类型的多处理器系统,这些文件在此引入作为参考。
图3示出了根据本发明的方面可以采用的SPU 300。一个或多个SPU 300可集成在PE 100中。在一个实施例中,PE包括多个PU 104,每个PU 104可以控制一个、全部或部分指定的SPU 300组。
SPU 300最好包括或逻辑连接本地存储器(LS)302、寄存器304、一个或多个浮点单元(FPU)306和一个或多个整数单元(IU)308。该SPU 300的组成部分又包括子部分,如下所述。根据所需的处理能力,可以使用更多或更少的FPU 306和IU 308。在一个优选实施例中,LS 302包含至少128Kb的存储容量,寄存器304的容量是128×128比特。FPU 306最好以至少320亿浮点操作每秒(32GFLOPS)的速度运行,IU 308最好以至少320亿操作每秒(32GOPS)的速度运行。
LS 302最好不是高速缓冲存储器。对于SPU的高速缓冲存储器相关性支持是不必要的。相反,LS 302最好是SRAM。PU 104可能需要对PU 104启动的直接存储器存取的高速缓冲存储器相关性支持。对于由SPU 300启动的直接存储器存取或对外部设备如I/O设备214的来回存取,高速缓冲存储器相关性支持也是不需要的。LS 302可以实施为例如与特定的SPU 300相关的物理存储器、与该SPU 300相关的虚拟存储区、物理存储器和虚拟存储的结合、或等价硬件、软件和/或固件结构。如果位于SPU 300的外部,则该LS302例如通过SPU指定的本地总线或通过如本地PE总线120的系统总线可与SPU 300连接。
SPU 300还包括用于通过总线接口(Bus I/F)312向和自SPU 300传送应用程序和数据的总线310。在一个优选实施例中,总线310为1024比特宽度。SPU 300还包括内部总线314、316和318。在一个优选实施例中,总线314的宽度为256比特,并提供本地存储器302和寄存器304间的通信。总线316和318分别提供寄存器304和FPU 306间以及寄存器304和IU 308间的通信。在一个优选实施例中,从寄存器304到FPU 306或IU 308的总线316和318的宽度是384比特,从FPU 306或IU 308到寄存器304的总线316和318的宽度是128比特。从寄存器304到FPU 306和IU 308的更宽的总线容纳处理期间来自寄存器304的更大的数据流。在一个实施例中,每次计算需要最大3个字。但是每次计算的结果通常只有一个字。
通过本发明,可能会克服虚拟化的缺少及其他本地存储地址空间和系统地址空间间的瓶颈问题。因为LS 302中数据的加载和卸载希望通过软件来执行,因此可能利用软件能够确定数据和/或代码是否在一个特定时间被加载这样的事实。这通过利用程序模块的使用来完成。正如这里所使用的,术语“程序模块”包括但不仅限于存储器内的程序资源的任意逻辑集合。仅仅是示例,程序代码可包括数据和/或代码,它们可以由任意的逻辑装置如编译器组合在一起。程序或其他计算操作可利用一个或多个程序模块来实施。
图4A是根据本发明的基于程序模块的使用的存储管理的示图400。该主存储器如存储器130,可包含一个或多个程序模块。在图4A中,第一程序模块402(程序模块A)和第二程序模块404(程序模块B)存储在主存储器130中。在一个优选例子中,该程序模块可以是编译时的目标模块,已知为一种“*.o”文件。目标模块提供不同程序部分间非常清晰的逻辑分割。由于目标模块是在编译期间产生的,因此它提供准确的地址引用,是否在模块内(“直接引用”)或模块外(“外部引用”或“间接引用”)进行。间接引用最好通过调用管理例程来实现,正如下面将要描述的。
最好,对于每个程序模块,程序被载入LS 302。更好的是,对于每个目标模块,程序被载入LS 302。如图4A所示,程序模块A被载入LS 302作为第一程序模块406,程序模块B被载入作为第二程序模块408。如箭头410所示,当执行直接引用以存取在模块内,如图所示的程序模块406内的数据或代码时,所有的引用(如代码和/或数据指针)都可以无需增加开销地被访问。当间接引用在模块外被执行时,如图中从程序模块406到程序模块408的虚线箭头412和413所示,最好调用管理例程414。该管理例程414最好由该处理器的逻辑单元运行,并且如果需要的话能够加载该程序模块,或是如果已经加载了则能够访问该程序模块。例如,假定间接引用(虚箭头412)在第一程序模块406(模块A)内进行。进一步假定该间接引用(虚箭头412)是要至程序模块B,而该模块在本地存储器302中没有发现。那么,该管理例程414可以加载作为程序模块404位于主存储器130内的程序模块B至本地存储器302中作为程序模块408。
图4B是表示根据本发明的优选实施例的存储管理的逻辑流程图440。存储管理在步骤S442开始。在步骤S444,执行校验以确定一个引用属于哪个程序模块。管理例程414(图4A)可执行该校验,或者该检验的结果由例如另一处理、应用或设备提供给该管理例程414。一旦该引用被确定,校验就在步骤S446被执行以确定是否该程序模块已经被加载至LS 302。如果该程序模块被加载至LS 302,则在步骤S448,从该程序模块引用的值(数据)被返回给请求实体,如图4A的程序模块406。如果程序模块没有被加载至LS302,则在步骤S450中,被引用的模块被加载至LS 302中。一旦发生这个,则处理进入到步骤S448,在其中数据被返回给请求实体。存储管理例程在步骤S452结束。管理例程414最好执行或监视图表400的存储管理。
如果使用在编译时形成的目标模块来实现程序模块,如何构建目标模块会影响存储管理过程的效率。例如,如果用于代码函数的数据没有被很好地与该代码函数相关,则这可能产生处理的瓶颈。这样,当将程序和/或数据分离到多个源文件中时应该注意。
通过分析程序,包括代码和数据(如果有的话),可以避免这个问题。在另一实施例中,代码和/或数据最好被分割到独立的模块。在另一个实施例中,代码和/或数据根据它们的用途被分割到程序或数据组中。编译器或其他处理工具可以分析函数和数据组间的引用。然后,已有的程序模块根据该分析将数据和/或代码分组到新的程序模块中,以优化程序模块的分组。这样,反过来将最小化由模块外存取所产生的额外开销。确定怎样分割模块的过程最好以通过由函数分离模块的代码开始。仅作为例子,可以从函数的“调出”关系中提取出树形结构。没有外部调出的函数,或者没有被外部引用的函数,可以被识别为“本地”函数。可以通过引用的目标模块来对具有外部引用的函数进行分组,并将之识别为具有外部引用。对于被外部引用的函数,可以执行类似的分组方式,并且这些函数应该被识别为受外部引用。模块的数据部分最好经历一次等价分析。模块的分组方式最好被比较/匹配以选择一个“最适合的”组合。例如,根据LS 302的大小、优选的传输尺寸和/或对齐,来选择最佳适合。最好是,一个引用越可能被使用,则在最适合的分析中其权重越高。还可以使用工具来自动化该优化的分组。例如,编译器和/或连接器可以执行一个或多个编译/连接的迭代,以生成最适合的可执行文件。还可以通过运行时的仿形(profiling)来统计地分析引用。
在一个优选实施例中,再分组过程的输入包括多个将被连接在一起以形成程序的目标文件。在这种实施例中,期望的输出包括多个加载模块,这些模块被分组以最小化在等待加载完成中产生的延迟。
图5A示出了具有第一程序模块502和第二程序模块504的程序模块组500,这两个程序模块最好被加载到SPU的LS 302中。因为在多线程处理过程中不同线程间可能共享同样的代码模块,因此可能加载第一程序模块502至第一本地存储器并加载第二程序模块至第二本地存储器。或者,整个的程序模块组500可能被加载至一对本地存储器中。但是,数据模块需要单独对待。另外,也可能扩展该动态加载和卸载的方法以使得共享的代码模块能够在管理例程管理与该共享的数据模块相关的独立的数据模块期间被使用。如图5A所示,第一程序模块502包括代码函数506和508及数据组510和512。该代码函数506包括操作A的代码。代码函数508包括操作B和C的代码。数据组510包括数据集A。数据组512包括数据集B、C和D。类似地,第二程序模块504包括代码函数514、516和数据组518、520。代码函数514包括操作D和E的代码。代码函数516包括操作F的代码。数据组518包括数据集D和E。数据组520包括数据集F和G。
在图5A的实施例中,代码函数506可直接引用数据组510(箭头521)并可间接引用代码函数514。代码函数508可直接引用数据组512(箭头523)。代码函数514可直接引用数据组520(箭头524)最后,代码函数516可直接引用数据组518(箭头526)。代码函数506和514间的间接引用(虚箭头522)产生了不希望的开销。因此,最好重组这些代码函数和数据组。
图5B示出了重组图5A中的程序模块组500的实施例。在图5B中,生成了新的程序模块530、532和534。程序模块530包括代码函数536、538和数据组540、542。该代码函数536包括操作A的代码。代码函数538包括操作D和E的代码。数据组540包括数据集A。数据组542包括数据集F和G。程序模块532包括代码函数544和数据组546。代码函数544包括操作B和C的代码。数据组546包括数据集B、C和D。程序模块534包括代码函数548和数据组550。代码函数548包括操作F的代码。数据组550包括数据集D和E。
在图5B的重组过程中,代码函数536可以直接引用数据组540(箭头521’)并可直接引用代码函数538(箭头522’)。代码函数544可直接引用数据组546(箭头523’)。代码函数538可直接引用数据组542(箭头524’)。最后,代码函数548可直接引用数据组550(箭头526’)。重组在图5B中被优化,因为直接引用被最大化而间接引用被取消了。
在一个更复杂的实施例中,图6A示出了具有第一模块602、第二模块604、第三模块606和第四模块608的函数调用树600,其中这些模块可被加载至SPU的LS 302中。如图6A所示,第一模块602包括代码函数610、612、614、616和618。代码函数610包括操作A的代码。代码函数612包括操作B的代码。代码函数614包括操作C的代码。代码函数616包括操作D的代码。代码函数618包括操作E的代码。第一模块602也包括数据组620、622、624、626和628,它们分别与代码函数610、612、614、616、618分别相关。数据组620包括数据集(或组)A。该数据组622包括数据集B。数据组624包括数据集C。数据组626包括数据集D。数据组628包括数据集E。
第二模块604包括代码函数630和632。代码函数630包括操作F的代码。代码函数632包括操作G的代码。第二模块604包括数据组634和636,它们分别与代码函数630和632相关。数据组638也包括在第二模块604中。数据组634包括数据集(或组)F。数据组636包括数据集G。数据组638包括数据集FG。
第三模块606包括代码函数640和642。代码函数640包括操作H的代码。代码函数642包括操作I的代码。第三模块606包括数据组644和646,它们分别与代码函数640和642相关。数据组648也包括在第三模块606中。数据组644包括数据集(或组)H。数据组646包括数据集I。数据组648包括数据集IE。
第四模块608包括代码函数650和652。代码函数650包括操作J的代码。代码函数652包括操作K的代码。第四模块608包括数据组654和656,它们分别与代码函数650和652相关。数据组654包括数据集(或组)J。数据组656包括数据集K。
在图6A的实施例中,关于第一代码模块602,代码函数610直接引用代码函数612(箭头613),代码函数614(箭头615),代码函数616(箭头617),和代码函数618(箭头619)。代码函数614间接引用代码函数630(虚箭头631)和代码函数632(虚箭头633)。代码函数616间接引用代码函数640(虚箭头641),和代码函数642(虚箭头643)。代码函数618间接引用代码函数642(虚箭头645),和数据组648(虚箭头647)。
关于第二代码模块604,代码函数630直接引用数据组638(箭头637)。代码函数632也直接引用数据组638(箭头639)。关于第三代码模块606,代码函数640间接引用代码函数650(虚箭头651)。代码函数640也间接引用代码函数652(虚箭头653)。代码函数642间接引用数据组648(箭头649)。关于第四代码模块608,代码函数650直接引用代码函数652(箭头655)。
在函数调用树600中有八个本地调用(直接引用)和八个外部调用(间接引用)。八个外部调用会产生大量不需要的开销。因此,最好重组该调用树600中的各部分以减少间接引用。
图6B示出了重组后的函数调用树660,该树具有第一模块662,第二模块664,第三模块666和第四模块668,这些模块可加载到SPU的LS 302中。如图6B所示,第一模块662包括代码函数610和612,和数据组620和622。第二模块664包括代码函数614、630和632。第二模块664还包括数据组634、636和638。第三模块666包括代码函数616、618和642。第三模块666还包括数据组626、628、646和648。第四模块668包括代码函数640、650和652,以及数据组644、654和656。
在图6B的例子中,关于第一代码模块662,代码函数610直接引用代码函数612(箭头613)。但是,由于重组,该第一代码模块662现在间接引用代码函数614(虚箭头615’),代码函数616(虚箭头617’),和代码函数618(虚箭头619’)。
关于第二代码模块664,代码函数614现在直接引用代码函数630(箭头631’)和代码函数632(箭头633’)。代码函数630仍然直接引用数据组638(箭头637),代码函数632仍然直接引用数据组638(箭头639)。
关于第三代码模块666,代码函数616间接引用代码函数640(虚箭头641),但现在直接引用代码函数642(箭头643’)。代码函数618现在直接引用代码函数642(箭头645’)和数据组648(箭头647’)。代码函数642仍然直接引用数据组648(箭头649)。
关于第四代码模块668,代码函数640现在直接引用代码函数650(箭头651’)。代码函数640还直接引用代码函数652(箭头653’)。代码函数650仍然直接引用代码函数652(箭头655)。
在函数调用树660中现在有12个本地调用(直接引用)和仅4个外部调用(间接引用)。通过减少一半的间接引用,不希望的开销可被减少。
可以加载到LS 302中的模块的数量受到LS 302的大小和模块自身大小的限制。但是,关于引用如何被寻址的代码分析提供了一种强大的工具,其可以使得程序代码在LS 302中的加载或卸载在需要前进行。如果能够确定在程序中的一个特定点将会需要一个程序模块,则加载就可以提前进行以减小按需加载模块造成的延时。即使不能完全确定一个给定的模块将被使用,很多情况下也可以更有效的预测性的加载很可能(如75%或更多)被使用的模块。
根据引用将被准确使用的可能性,引用可以严格执行,或者允许请求式检验。程序中加载例程的插入点可利用编译器或替换工具统计确定。该插入点也可以在模块产生前统计确定。该插入点的正确性可根据运行时间状况确定。例如,可以利用一个加载例程来判断该加载是否应该被执行。对于一组在运行期间被加载的程序模块最好减小加载或卸载量。运行时间仿形图分析可以提供数据信息以确定每一模块将被加载的位置。根据典型的堆栈管理,应该为那些没有进一步调用的模块选择任意的加载位置。例如,在传统的堆栈管理过程中,堆栈帧由返回指针构成。当函数返回,包含调用模块的模块必须位于与当它被调用时的位置相同的位置。只要一个模块被加载到与它返回时相同的位置,就可能在每次该模块被重新调用时将它加载到不同的位置。但是,当从外部函数调用中返回时,管理例程就将该调用模块加载到最初的位置。
图7A是表示预先加载过程的流程图700。在步骤S702开始。在步骤S704,确定程序模块的插入点。如上所述,该插入点可例如通过编译器或通过仿形分析来确定。执行分支路径可由树结构来表示。就是该树结构中的位置确定了该引用是否将被使用或可能被使用,例如根据从0%到100%的概率,其中100%的概率意味着该引用明确被使用,0%的概率意味着该引用不会被使用。插入点应该被设置在一个分支后。然后,在步骤S706,该模块例如通过DMA转发器被加载。加载最好在后台处理过程中执行以最小化代码执行的延时。然后,在步骤S708,确定加载是否已完成。如果该过程没有完成,则在步骤S710,代码执行被中断以允许程序代码的全部加载。一旦加载完成,该过程在步骤S712结束。
图7B示出了根据图7A的预载的程序模块的例子。如图所示,代码执行722由处理器如SPU 300完成。开始,第一函数A可由该处理器执行。一旦第二函数B的插入点724如上所述的被确定,则包含函数B的程序模块就由例如DMA转发器726加载。该DMA转发器726花费一些时间周期如图所示的TLOAD。如果该处理器准备好了执行函数B,例如由于函数A中的一个程序跳转,则在步骤S708确定是否该程序模块B的加载已经完成。如图7B所示,该转发器726到跳转728发生时还没有完成。因此,进入等待周期Twait直到转发器726已经完成。该处理器在该Twait期间例如可以执行一个或多个“空操作”(NOP)。一旦Twait结束,该处理器在点730开始处理函数B。因此,可以看出,考虑等待周期Twait(如果有),模块的预载节省了时间DT。
根据本发明的方面的程序模块的优化的关键优点是最小化了等待加载和卸载模块所花费的时间。一个开始发挥作用的因素是模块传输的延时和带宽。实际传输所花费的时间与以下因素直接相关:(a)引用执行的次数;(b)传输步骤的延时;(c)传输大小;(d)传输带宽。另一因素是可用存储空间的大小。
虽然统计分析可用作代码组织过程的一部分,但它通常仅限于提供函数间的关系,并不提供关于在一组时间周期内一个给定函数被调用多少次的信息。最好,对这样的统计数据的引用用作重组的一个因子。另外的代码分析也可以用来提供一些关于在一个函数内函数调用发生的频率和次数的信息。在一个实施例中,可以仅对那些只利用统计分析获得的信息进行优化。
可包括在优化算法中的另一元素是模块的大小和预期的布置。例如,如果必须卸载调用模块以加载被调用模块,则该卸载将增加更多的延时才能完成该函数调用。
在设计优化算法时,最好包括一个或多个用于量化该优化的因子(如加权因子)。根据一个因子,函数引用最好与模块被调用的频率、次数及模块的大小进行加权。例如,模块被调用的次数可乘以模块的大小。在一种统计分析模式中,远离调用树的函数调用可给以更多的权重以表示该调用将被更频繁的执行。
根据另一因子,如果调用保持在一个模块内(一个本地调用),该权重可降低或给以零权重。根据另一因子,不同的权重可根据一个具有代码结构分析的函数设置给一个调用。例如,希望只进行了一次的调用权重低于被作为一个循环的一部分被无数次执行的调用。而且,如果能够确定循环迭代的数量,该数量可被用作该循环调用的加权因子。然而根据另一因子,只在一个函数中使用的统计数据调用应被认为附加于那个函数上。根据另一因子,如果统计数据在不同函数间共享,则可望在一个模块内包括这些函数。
根据另一因子,如果整个程序足够小,则该程序应该放在一个模块中。否则,该程序应该被分到多个模块中。根据另一因子,如果该程序模块被分到了多个模块中,则最好组织这些模块以使得调用和被调用模块均适合该存储器。关于分割一个程序到一个模块中最后的两个因子应该同时考虑其他因子来进行评价以获得期望的优化算法。上面讨论的图形示出了各种根据一个或多个选择的因子进行重组的方法。
图8是一种计算机网络的方框图,示出了可以单独使用或在本发明的网络结构中使用的各种计算设备。这些计算设备可以包括使用如在典型的PC膝上型电脑、服务器、游戏控制器、PDA等中可以见到的各种类型的用户输入、显示器、存储器和处理器的计算机型设备。例如,图8示出了计算机网络800,其具有多个计算机处理系统810、820、830、840、850和860,这些系统通过如LAN、WAN、互联网等的通信网络870互相连接,该连接可以是有线的、无线的、组合的等。
每一计算机处理系统可包括如一个或多个计算设备,该计算设备具有如键盘811和鼠标812(和各种其他类型的已知输入设备,如笔输入器、操纵杆、按钮、触摸屏等)是用户输入、连接显示器814的显示接口813(如连接器、端口、卡等),该显示器可能包括例如CRT、LCD、或等离子显示器、TV、投影仪等。每个计算机最好还包括在如一个或多个存储器和一个或多个位于计算机处理系统内的处理器这样的设备内可见的常规处理部件。这样的计算设备内的这些存储器和处理器用于执行例如这里所描述的根据本发明的各个实施例使用编程引用的程序模块的处理。这些存储器可包括本地和外部存储器,用于存储根据本发明的代码函数和数据组。
尽管本发明是参照其特定的优选实施例来描述的,但应该理解,这些实施例仅仅示例性地说明了本发明的原理和应用。在不脱离由所附权利要求限定的本发明的精神和范围的情况下,可以对这些示例性实施例和其他方式进行各种修改。
工业应用性
本发明可应用于计算机程序执行技术。
Claims (34)
1、一种管理具有本地存储器的处理装置的操作的方法,该方法包括:
确定程序模块是否被加载至该本地存储器中,该程序模块与编程引用有关;
如果该程序模块没有加载至该本地存储器则加载该程序模块至本地存储器;和
根据该编程引用从该程序模块中获取信息。
2、如权利要求1所述的方法,其中从该程序模块获得的信息包括数据和代码中的至少一种。
3、如权利要求1-2中任一权利要求所述的方法,其中该程序模块包括从主存储器加载至该本地存储器中的目标模块。
4、如权利要求1-3中任一权利要求所述的方法,其中该编程引用包括该程序模块中的直接引用。
5、如权利要求1-4中任一权利要求所述的方法,其中该编程引用包括关于第二程序模块的间接引用。
6、如权利要求1-5中任一权利要求所述的方法,其中该程序模块是第一程序模块,并且该方法进一步包括:
在主存储器中存储该第一程序模块和第二程序模块;
其中该加载步骤包括从该主存储器中加载该第一程序模块至该本地存储器。
7、如权利要求6所述的方法,其中该编程引用包括该第一程序模块内的直接引用。
8、如权利要求6-7中任一权利要求所述的方法,其中该编程引用包括至该第二程序模块的间接引用。
9、如权利要求8所述的方法,其中信息从该第二程序模块获得,该方法还包括:
确定该第二程序模块是否已在本地存储器中加载;
如果第二程序模块没有加载至本地存储器,则将第二程序模块加载至本地存储器;和
提供该信息至第一程序模块。
10、一种管理具有本地存储器的处理装置内的操作的方法,该方法包括:
从主存储器获取第一程序模块;
从主存储器获取第二程序模块;
确定该第一程序模块所使用的编程引用是否包括至该第二程序模块的间接引用;和
如果编程引用包括间接引用则形成新的程序模块,该新的程序模块包括第一程序模块的至少一部分,这样该编程引用变成该新的程序模块的不同部分间的直接引用。
11、如权利要求10所述的方法,还包括加载该新的程序模块至本地存储器的步骤。
12、如权利要求10-11中任一权利要求所述的方法,其中该第一和第二程序模块在形成该新的程序模块前被加载至本地存储器。
13、如权利要求10-12中任一权利要求所述的方法,其中该第一程序模块包括第一代码功能,该第二程序模块包括第二代码功能,该新的程序模块被形成以包括该第一和第二代码功能中的至少之一。
14、如权利要求10-13中任一权利要求所述的方法,其中该第一程序模块还包括数据组,该新的程序模块被形成以进一步包括该数据组。
15、如权利要求10-14中任一权利要求所述的方法,其中该编程引用是至该第二程序模块的间接引用,并且该方法还包括:
根据该第一程序模块所使用的编程引用确定该新的程序模块所使用的新的编程引用;
其中该新的程序模块被形成以包括至少该第一程序模块的部分和至少该第二程序模块的部分,这样该新的编程引用是新的程序模块内的直接引用。
16、一种具有本地存储器的处理装置的处理操作的方法,该方法包括:
执行本地存储器中加载的第一程序模块;
确定第二程序模块的插入点;
在该第一程序模块执行期间在本地存储器中加载该第二程序模块;
确定一预期执行时间以开始执行该第二程序模块;
确定该第二程序模块的加载是否已完成;和
第一程序模块执行结束后执行该第二程序模块。
17、如权利要求16所述的方法,还包括如果加载没有完成则延迟执行第二程序模块。
18、如权利要求17所述的方法,其中延迟执行包括执行一个或多个NOP直到加载完成。
19、如权利要求16-18中任一权利要求所述的方法,其中该插入点统计确定。
20、如权利要求16-19中任一权利要求所述的方法,其中该插入点的正确性根据运行时间状况确定。
21、一种处理系统,包括:
能够存储程序模块的本地存储器;和
与该本地存储器连接的处理器,该处理器包括执行一种管理功能的逻辑,该管理功能包括:关联编程引用和该程序模块;确定该程序模块是否当前已被加载至本地存储器;如果该程序模块当前没有被加载至本地存储器,则加载该程序模块至该本地存储器;以及根据该编程引用从该程序模块获取信息。
22、如权利要求21所述的处理系统,其中该本地存储器与该处理器集成在一起。
23、一种处理系统,包括:
能够存储程序模块的本地存储器;和
与该本地存储器连接的处理器,该处理器包括执行一种管理功能的逻辑,该管理功能包括:在主存储器中存储第一和第二程序模块之一;从主存储器中加载选择的第一和第二程序模块之一至本地存储器;关联编程引用与该选择的程序模块;以及根据该编程引用获取信息。
24、如权利要求23所述的系统,其中该主存储器包括单片存储器。
25、如权利要求23-24中任一权利要求所述的系统,其中该主存储器与该处理器集成在一起。
26、一种处理系统,包括:
能够存储程序模块的本地存储器;和
与该本地存储器连接的处理器,该处理器包括执行一种管理功能的逻辑,该管理功能包括:从主存储器获取第一程序模块;从该主存储器获取第二程序模块;确定该第一程序模块使用的第一编程引用,形成包括该第一程序模块的至少一部分的新的程序模块,这样该第一编程引用变成该新的程序模块内的直接引用,并加载该新的程序模块至本地存储器中。
27、一种处理系统,包括:
能够存储程序模块的本地存储器;和
与该本地存储器连接的处理器,该处理器包括执行一种管理功能的逻辑,该管理功能包括:确定第一程序模块的插入点;在该处理器执行第二程序模块期间在本地存储器中加载该第一程序模块;并在执行完第二程序模块及加载完成后执行第一程序模块。
28、一种存储处理器使用的程序的存储介质,该程序使得该处理器:
识别与编程引用相关的程序模块;
确定该程序模块当前是否已被加载至与该处理器相关的本地存储器中;
如果该程序模块当前没有加载至本地存储器,则加载该程序模块至本地存储器中;和
根据该编程引用从该程序模块中获取信息。
29、一种存储处理器使用的程序的存储介质,该程序使得该处理器:
在主存储器中存储第一和第二程序模块;
从主存储器中加载该第一程序模块至与该处理器相关的本地存储器中,该第一程序模块与编程引用相关;和
根据该编程引用获取信息。
30、一种存储处理器使用的程序的存储介质,该程序使得该处理器:
从主存储器中获取第一程序模块;
从该主存储器获取第二程序模块;
确定该第一程序模块所使用的编程引用是否包括至该第二程序模块的间接引用;
如果编程引用包括该间接引用,则形成新的程序模块,该新的程序模块包括该第一程序模块的至少一部分,这样该编程引用成为与该新的程序模块相关的直接引用。
31、一种存储处理器使用的程序的存储介质,该程序使得该处理器:
执行加载在与该处理器相关的本地存储器中的第一程序模块;
确定第二程序模块的插入点;
在第一程序模块执行期间在本地存储器中加载该第二程序模块;
确定预期执行时间以开始第二程序模块的执行;
确定该第二程序模块的加载是否已完成;和
第一程序模块执行结束后执行第二程序模块。
32、一种处理系统,包括:
处理部分,该处理部分包括总线、处理单元和至少一个通过该总线与该处理单元相连的子处理单元;
其中至少一个处理单元和该至少一个子处理单元用于确定一编程引用是否属于第一程序模块,以加载该第一程序模块至本地存储器,并根据该编程引用从该第一程序模块中获取信息。
33、一种计算机处理系统,包括:
用户输入设备;
连接显示设备的显示接口;
能够存储程序模块的本地存储器;和
与该本地存储器连接的处理器,该处理器包括一个或多个处理部分,至少一个处理部分包括执行管理功能的逻辑,该管理功能包括:确定一编程引用是否属于第一程序模块;并加载该第一程序模块至该本地存储器;根据该编程引用从该第一程序模块获取信息。
34、一种计算机网络,包括:
通过通信网络彼此连接的多个计算机处理系统,每个计算机处理系统包括:
用户输入设备;
连接显示设备的显示接口;
能够存储程序模块的本地存储器;和
与该本地存储器连接的处理器,该处理器包括一个或多个处理部分,至少一个处理部分包括执行管理功能的逻辑,该管理功能包括:确定一编程引用是否属于第一程序模块;并加载该第一程序模块至该本地存储器;根据该编程引用从该第一程序模块获取信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/957,158 | 2004-10-01 | ||
US10/957,158 US20060075394A1 (en) | 2004-10-01 | 2004-10-01 | Dynamic loading and unloading for processing unit |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1914597A true CN1914597A (zh) | 2007-02-14 |
Family
ID=35517186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005800031390A Pending CN1914597A (zh) | 2004-10-01 | 2005-09-29 | 处理单元的动态加载和卸载 |
Country Status (6)
Country | Link |
---|---|
US (2) | US20060075394A1 (zh) |
EP (1) | EP1794674A1 (zh) |
JP (1) | JP2006107497A (zh) |
KR (1) | KR20080104073A (zh) |
CN (1) | CN1914597A (zh) |
WO (1) | WO2006038664A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101193452B (zh) * | 2007-03-15 | 2011-03-16 | 中兴通讯股份有限公司 | 自动交换光网络中控制模块注册的方法及其应用方法 |
CN113821272A (zh) * | 2021-09-23 | 2021-12-21 | 武汉深之度科技有限公司 | 一种应用程序运行方法、计算设备及存储介质 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006080897A1 (en) * | 2005-01-26 | 2006-08-03 | Infineon Technologies Ag | Improvements in and relating to memory updating |
US20080005473A1 (en) * | 2006-06-30 | 2008-01-03 | Tong Chen | Compiler assisted re-configurable software implemented cache |
KR100866627B1 (ko) * | 2007-01-29 | 2008-11-03 | 삼성전자주식회사 | 컨트롤 플로우를 이용한 페이지 프리로드 방법 및 그시스템 |
JP4339371B2 (ja) * | 2007-03-22 | 2009-10-07 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置および情報処理方法 |
GB2456019A (en) * | 2007-12-31 | 2009-07-01 | Symbian Software Ltd | Loading dynamic link libraries in response to an event |
JP5187944B2 (ja) * | 2008-03-05 | 2013-04-24 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータ使用可能コードを実行する装置及び方法 |
US8312254B2 (en) * | 2008-03-24 | 2012-11-13 | Nvidia Corporation | Indirect function call instructions in a synchronous parallel thread processor |
KR101670916B1 (ko) * | 2009-03-03 | 2016-10-31 | 삼성전자 주식회사 | 실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치 |
KR101633484B1 (ko) * | 2009-12-11 | 2016-06-27 | 삼성전자주식회사 | 선택적 부팅 방법 및 이를 이용한 방송 수신 장치 |
US9710355B2 (en) * | 2010-01-14 | 2017-07-18 | Microsoft Technology Licensing, Llc | Selective loading of code elements for code analysis |
US8640115B2 (en) * | 2010-04-30 | 2014-01-28 | Oracle International Corporation | Access control in modules for software development |
KR102087395B1 (ko) * | 2013-01-16 | 2020-03-10 | 삼성전자주식회사 | 전자 장치에서 응용프로그램을 실행하기 위한 장치 및 방법 |
KR102547795B1 (ko) * | 2016-05-04 | 2023-06-27 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법 |
US10268465B2 (en) * | 2016-10-24 | 2019-04-23 | International Business Machines Corporation | Executing local function call site optimization |
US10360005B2 (en) * | 2016-10-24 | 2019-07-23 | International Business Machines Corporation | Local function call tailoring for function pointer calls |
US10534593B2 (en) * | 2016-10-24 | 2020-01-14 | International Business Machines Corporation | Optimized entry points and local function call tailoring for function pointers |
US10725838B2 (en) * | 2017-03-29 | 2020-07-28 | Microsoft Technology Licensing, Llc | Application startup control |
US10776133B2 (en) * | 2018-01-25 | 2020-09-15 | Salesforce.Com, Inc. | Preemptive loading of code dependencies for improved performance |
US12073199B2 (en) * | 2019-06-06 | 2024-08-27 | Amazon Technologies, Inc. | Reducing computation in neural networks using self-modifying code |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5123098A (en) * | 1989-02-28 | 1992-06-16 | Hewlett-Packard Company | Method for executing programs within expanded memory of a computer system using MS or PC DOS |
US5317718A (en) * | 1990-03-27 | 1994-05-31 | Digital Equipment Corporation | Data processing system and method with prefetch buffers |
IL100990A (en) * | 1991-02-27 | 1995-10-31 | Digital Equipment Corp | Multilingual optimization compiler that uses Gladi in the production of a multi-pass cipher |
DE59108956D1 (de) * | 1991-09-30 | 1998-04-23 | Siemens Ag | Verfahren zur Erstellung einer ablauffähigen Konfiguration eines in einen Systemspeicherbereich eines Prozessorsystems ladbaren Systemprogramms |
US5625822A (en) * | 1992-06-26 | 1997-04-29 | Digital Equipment Corporation | Using sorting to do matchup in smart recompilation |
US5566324A (en) * | 1992-12-24 | 1996-10-15 | Ncr Corporation | Computer apparatus including a main memory prefetch cache and method of operation thereof |
US5452457A (en) * | 1993-01-29 | 1995-09-19 | International Business Machines Corporation | Program construct and methods/systems for optimizing assembled code for execution |
US5475840A (en) * | 1993-04-13 | 1995-12-12 | Sun Microsystems, Inc. | High performance dynamic linking through caching |
US5751982A (en) * | 1995-03-31 | 1998-05-12 | Apple Computer, Inc. | Software emulation system with dynamic translation of emulated instructions for increased processing speed |
US5815718A (en) * | 1996-05-30 | 1998-09-29 | Sun Microsystems, Inc. | Method and system for loading classes in read-only memory |
JPH10116229A (ja) * | 1996-10-09 | 1998-05-06 | Toshiba Corp | データ処理装置 |
US5901291A (en) * | 1996-10-21 | 1999-05-04 | International Business Machines Corporation | Method and apparatus for maintaining message order in multi-user FIFO stacks |
US6080204A (en) * | 1997-10-27 | 2000-06-27 | Altera Corporation | Method and apparatus for contemporaneously compiling an electronic circuit design by contemporaneously bipartitioning the electronic circuit design using parallel processing |
JP3638770B2 (ja) * | 1997-12-05 | 2005-04-13 | 東京エレクトロンデバイス株式会社 | テスト機能を備える記憶装置 |
US6175957B1 (en) * | 1997-12-09 | 2001-01-16 | International Business Machines Corporation | Method of, system for, and computer program product for providing efficient utilization of memory hierarchy through code restructuring |
US7143421B2 (en) * | 1998-09-09 | 2006-11-28 | Microsoft Corporation | Highly componentized system architecture with a demand-loading namespace and programming model |
US6330623B1 (en) * | 1999-01-08 | 2001-12-11 | Vlsi Technology, Inc. | System and method for maximizing DMA transfers of arbitrarily aligned data |
US6718543B2 (en) * | 1999-11-08 | 2004-04-06 | Hewlett-Packard Development Company, L.P. | Method and apparatus for optimization of the performance of an application program in a computer system while preserving the system behavior |
DE10035270A1 (de) * | 2000-07-20 | 2002-01-31 | Siemens Ag | Verfahren zur Auswahl, Bearbeitung und Anzeige von Daten oder Datenobjekten |
JP2002063042A (ja) * | 2000-08-21 | 2002-02-28 | Nec Microsystems Ltd | プログラム・モジュール管理システム、その管理方法及びその管理プログラムを記録した記録媒体 |
US20020069263A1 (en) * | 2000-10-13 | 2002-06-06 | Mark Sears | Wireless java technology |
US6457023B1 (en) * | 2000-12-28 | 2002-09-24 | International Business Machines Corporation | Estimation of object lifetime using static analysis |
WO2003034229A1 (en) * | 2001-10-19 | 2003-04-24 | Telefonaktiebolaget Lm Ericsson | Data prefecthing in a computer system |
US7392390B2 (en) * | 2001-12-12 | 2008-06-24 | Valve Corporation | Method and system for binding kerberos-style authenticators to single clients |
-
2004
- 2004-10-01 US US10/957,158 patent/US20060075394A1/en not_active Abandoned
-
2005
- 2005-09-29 WO PCT/JP2005/018485 patent/WO2006038664A1/en active Application Filing
- 2005-09-29 EP EP05790425A patent/EP1794674A1/en not_active Withdrawn
- 2005-09-29 CN CNA2005800031390A patent/CN1914597A/zh active Pending
- 2005-09-29 KR KR1020087026005A patent/KR20080104073A/ko not_active Application Discontinuation
- 2005-09-29 JP JP2005283606A patent/JP2006107497A/ja active Pending
-
2008
- 2008-08-15 US US12/228,689 patent/US20080313624A1/en not_active Abandoned
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101193452B (zh) * | 2007-03-15 | 2011-03-16 | 中兴通讯股份有限公司 | 自动交换光网络中控制模块注册的方法及其应用方法 |
CN113821272A (zh) * | 2021-09-23 | 2021-12-21 | 武汉深之度科技有限公司 | 一种应用程序运行方法、计算设备及存储介质 |
CN113821272B (zh) * | 2021-09-23 | 2023-09-12 | 武汉深之度科技有限公司 | 一种应用程序运行方法、计算设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP2006107497A (ja) | 2006-04-20 |
US20080313624A1 (en) | 2008-12-18 |
EP1794674A1 (en) | 2007-06-13 |
US20060075394A1 (en) | 2006-04-06 |
KR20080104073A (ko) | 2008-11-28 |
WO2006038664A1 (en) | 2006-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1914597A (zh) | 处理单元的动态加载和卸载 | |
Breß et al. | Robust query processing in co-processor-accelerated databases | |
US11003664B2 (en) | Efficient hybrid parallelization for in-memory scans | |
Warneke et al. | Exploiting dynamic resource allocation for efficient parallel data processing in the cloud | |
Cho et al. | PARADIS: An efficient parallel algorithm for in-place radix sort | |
US8352945B2 (en) | System, method, and apparatus for scan-sharing for business intelligence queries in an in-memory database | |
Bach et al. | Optimized HPL for AMD GPU and multi-core CPU usage | |
Cong et al. | Fast PGAS implementation of distributed graph algorithms | |
Sundar et al. | Hyksort: a new variant of hypercube quicksort on distributed memory architectures | |
Stratton et al. | Algorithm and data optimization techniques for scaling to massively threaded systems | |
CN1991768A (zh) | 与不同种类的资源通信的基于指令系统结构的内定序器 | |
US11526960B2 (en) | GPU-based data join | |
US10529049B2 (en) | Efficient parallel algorithm for integral image computation for many-core CPUs | |
Fujiki et al. | Near-memory data transformation for efficient sparse matrix multi-vector multiplication | |
Yogatama et al. | Orchestrating data placement and query execution in heterogeneous CPU-GPU DBMS | |
CN1928811A (zh) | 处理操作管理系统和方法 | |
Paul et al. | Revisiting hash join on graphics processors: A decade later | |
Butcher et al. | Optimizing for KNL usage modes when data doesn't fit in MCDRAM | |
Elnashar | Parallel performance of MPI sorting algorithms on dual-core processor windows-based systems | |
Gonthier et al. | Memory-aware scheduling of tasks sharing data on multiple gpus with dynamic runtime systems | |
Lin et al. | GPU performance vs. thread-level parallelism: Scalability analysis and a novel way to improve TLP | |
Malik et al. | Task scheduling for GPU accelerated hybrid OLAP systems with multi-core support and text-to-integer translation | |
Karnagel et al. | Heterogeneous placement optimization for database query processing | |
Orzechowski et al. | Effective biclustering on GPU-capabilities and constraints | |
Choi et al. | A lightweight and efficient GPU for NDP utilizing data access pattern of image processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20070214 |