CN101233489B - 自适应进程分派的方法和系统 - Google Patents
自适应进程分派的方法和系统 Download PDFInfo
- Publication number
- CN101233489B CN101233489B CN2006800284295A CN200680028429A CN101233489B CN 101233489 B CN101233489 B CN 101233489B CN 2006800284295 A CN2006800284295 A CN 2006800284295A CN 200680028429 A CN200680028429 A CN 200680028429A CN 101233489 B CN101233489 B CN 101233489B
- Authority
- CN
- China
- Prior art keywords
- processor
- characteristic set
- loading unit
- code
- processors
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Abstract
进程或线程的运行时特征集合被生成并被与至少一个处理器特征集合比较。每个处理器特征集合表示被一个或更多处理器支持的零个或更多可选硬件特征,而所述运行时特征集合表示所述进程或线程所依赖于的零个或更多可选硬件特征。对所述特征集合的比较确定甚至在异构处理器环境中特定进程或线程是否可以在特定处理器上运行。系统任务分派器将所述进程或线程指派为在由所述比较指示为与所述进程或线程兼容的一个或更多处理器上执行。当新特征被添加到所述进程或线程时,所述运行时特征集合被更新,并再次与至少一个处理器特征集合比较。如果必要,所述系统任务分派器重新指派所述进程或线程。
Description
技术领域
本发明一般涉及数字数据处理领域。特别地,本发明涉及具有多个处理器的计算机系统中的自适应进程分派。
背景技术
在二十世纪的下半叶,开始了称为信息革命的现象。虽然信息革命是在范围上大于任何一个事件或机器的历史发展,然而没有任一个单一设备已达到比数字电子计算机更能代表信息革命。计算机系统的发展当然已经是革命。每年,计算机系统都增长更快、存储更多数据以及为其用户提供更多应用。
现代计算机系统典型包括至少一个中央处理单元(CPU)以及对于存储、检索和传输信息必要的、例如通信总线和存储器的支持硬件。其还包括对于与外部世界通信必要的、例如输入/输出控制器或存储控制器的硬件以及附加到其的例如键盘、监视器、磁带驱动器、磁盘驱动器、耦合到网络的通信线路等的设备。所述一个或多个CPU是计算机的心脏。其执行包括计算机程序的指令,以及指示其它系统部件的运转。
计算机系统的总体速度典型经由提高并行度以及特别经由利用多个CPU(也称为处理器)而被提高。集成电路芯片上封装的各个处理器的适度成本已使得多处理器系统成为现实,尽管所述多处理器向系统添加了更多层复杂度。
从计算机的硬件的观点来看,多数系统以基本上相同的方式运转。处理器能够实施例如算术、逻辑比较和从一个位置到另一个的数据移动的非常简单的操作。但每个操作被非常快速地实施。处于多层的复杂软件指示计算机实施大量所述简单操作,这使得计算机能够实施复杂任务。经由使用具有增强功能的软件和更快的硬件来实施实质相同的非常简单的操作集合而使得被用户感知为计算机系统的新的或改进的功能成为可能。
在数字计算机的非常早期的历史中,指示所述计算机实施某个任务的计算机程序以可直接被所述计算机的处理器执行的形式编写。甚至当实施相对简单的任务时,所述程序对于人类也非常难于编写、理解和维护。随着所述程序的数量和复杂度增长,该方法变得明显无法工作。于是,创建和执行计算机软件的可替换形式被开发。特别地,大量和不同的高级语言的集合被开发以用于支持计算机软件的创建。
高级语言在其特征上不同,但所有所述语言都旨在使得对于人类编写用于实施某个任务的程序更容易。典型地,高级语言以对于人类程序员而非计算机更容易理解的方式来表示指令、固定值、变量和其它结构。所述程序不可被所述计算机的处理器直接执行。为在所述计算机上运行,所述程序必需首先被转换成所述处理器可以执行的形式。
将高级语言程序转换为可执行形式要求人类可读程序形式(即源代码)被转换为处理器可执行形式(即目标代码)。该转换过程一般导致从计算机资源利用角度的某种效率损失。计算机相比于其人类程序员被看作是廉价资源。高级语言一般旨在使得对于人类更易于编写编程代码,而并不必要从计算机的角度改进所述目标代码的效率。数据和过程在高级语言中被方便地表示的方式不必要对应于计算机资源的最高效使用,但该缺点通常认为是为改进人类程序员的性能而可接受的。
尽管高级语言的使用中涉及的特定低效率可以是不可避免的,但仍然希望开发用于在实践中减少低效率的技术。所述情形已导致编译器以及所谓“优化”编译器的使用。编译器经由查看指令流和尝试以最高效的方式使用执行计算机的可用资源来将源代码转换为目标代码。例如,所述编译器基于作为整体对所述指令流的分析来分配所述处理器中的有限数量寄存器的使用,以及由此有希望最小化加载和存储操作的数量。优化编译器可以做出关于程序应当怎样在目标代码中被编码的甚至更复杂的决定。例如,所述优化编译器可以确定是否将源代码中的被调用过程编码为目标代码中的一组内嵌指令。
处理器体系结构(例如Power、x86等)通常被看作静态和不改变的。然而,所述理解是不准确的,因为处理器体系结构被适当地特征化为可扩展的。尽管多数处理器功能典型地贯穿体系结构的生存期确实保持稳定,但新特征可以随时间被添加到处理器体系结构。处理器体系结构的该可扩展性的熟知的示例如对x86处理器体系结构的浮点单元的添加,其首先作为可选的协处理器以及最终作为每个x86处理器芯片的集成部分。由此,甚至在相同处理器体系结构中,被一个处理器拥有的特征可以与被另一处理器拥有的特征不同。
当新特征被添加到处理器体系结构时,软件开发者面对困难的选择。计算机程序必须在具有或不具有被该新特征支持的指令的情况下被建立。具有要求该新特征的指令的计算机程序或者与不支持这些指令并且不能与其一起使用的较老硬件模型不兼容,或者较老硬件模型必须使用仿真来支持这些指令。仿真经由创建陷阱处理器(trap handler)来工作,其中,所述陷阱处理器捕获非法指令异常、定位出错指令以及用软件仿真其行为。这可以需要数百条指令来仿真单一不被支持的指令。当不被支持的指令被频繁执行时,产生的开销可以导致不可接受的性能延迟。
如果仿真对于计算机系统不可接受,则开发者可以选择或者将计算机程序限于支持所述新特征的处理器,或者建立所述计算机程序的两个版本,即使用所述新特征的一个版本和不使用所述新特征的另一版本。这两种选项都是不利的。将所述计算机程序限于支持所述新特征的处理器减小了所述计算机程序的市场范围。建立所述计算机程序的两个版本增加了开发和支持的成本。
在例如Java和.NET虚拟机(VM)的特定面向对象虚拟机环境中,该兼容性问题经由使用即时(JIT)编译来解决。JIT编译器每当计算机程序被加载到所述环境中时通过公共中间表示重新编译代码。每个计算机可以具有利用该计算机上出现的特征的不同JIT编译器。这是非常有益的,但仅在VM环境中。
由于利用新特征涉及的问题,软件开发者典型在所述特征在其平台上所有所支持的计算机上变得公用之前将不这么做。这通常导致硬件特征的引入与其被一般接受之间的格外长的时延。例如,在新硬件特征的实现与其利用之间,可以过去五年或更多年。
此外,利用新特征涉及的附加问题在异构处理器环境的上下文中出现。异构处理器环境的示例如多处理器计算机系统,其中同一处理器家族的不同模型同时共存。所述与例如其中每个处理器是相同模型的多处理器计算机系统的同构处理器环境形成对比。在异构处理器环境中,当分派需要出现在处理器家族中的某些处理器模型上但不出现在同一处理器家族中的其它处理器模型上的特定特征的计算机程序时,问题可以出现。即,所述计算机程序可能被分派到缺少所需特征的处理器。
存在对一种更灵活的系统的需求,所述系统允许计算机程序当其出现在异构处理器环境中时自动利用新硬件特征,以及避免当其不出现时使用其。
发明内容
根据本发明的优选实施例,进程或线程的运行时特征集合被生成,并且被与至少一个处理器特征集合比较。所述处理器特征集合表示被一个或更多所述处理器支持的零个、一个或更多可选硬件特征,而所述运行时特征集合表示所述进程或线程所依赖于的零个、一个或更多可选硬件特征(即,执行包含在所述进程或线程中的代码所需的零个、一个或更多可选硬件特征)。对所述特征集合的比较确定甚至在异构处理器环境中特定进程或线程是否可以运行在特定处理器上。系统任务分派器将所述进程或线程指派为在由所述比较指示为与该进程或线程兼容的一个或更多所述处理器上执行。当新特征被添加到所述进程或线程时,所述运行时特征集合被更新以及再次与至少一个处理器特征集合比较。如果必要,所述系统任务分派器重新指派所述进程或线程。
根据本发明的一个方面,公开了一种用于在具有多个处理器的计算机系统中的自适应进程分派的方法,所述方法包括以下步骤:
创建进程;
请求加载单元被加载到该进程中,其中,所述加载单元是总是作为单一实体被加载的代码的集合,且具有关联于该加载单元的特征集合;
基于所述加载单元的特征集合生成该进程的运行时特征集合;
将所述运行时特征集合与至少一个处理器特征集合进行比较,其中,每个处理器特征集合关联于一个或更多所述处理器;
将所述进程指派为在由所述比较步骤指示为与该进程兼容的一个或更多所述处理器上执行,
其中所述请求加载单元被加载到所述进程中的步骤包括以下步骤:加载具有关联于其的特征集合的可执行程序、动态链接库和动态生成的代码中的一个,以及,
所述生成该进程的运行时特征集合的步骤包括以下步骤:将所述可执行程序、动态链接库或动态生成的代码的特征集合或运算到之前生成的运行时特征集合中。
根据本发明的另一个方面,公开了一种用于在具有多个处理器的计算机系统中的自适应进程分派的系统,所述系统包括:
用于创建进程的装置;
用于请求加载单元被加载到该进程中的装置,其中,所述加载单元是总是作为单一实体被加载的代码的集合,且具有关联于该加载单元的特征集合的装置;
用于基于所述加载单元的特征集合生成该进程的运行时特征集合的装置;
用于将所述运行时特征集合与至少一个处理器特征集合进行比较的装置,其中,每个处理器特征集合关联于一个或更多所述处理器;
用于将所述进程指派为在由所述比较装置指示为与该进程兼容的一个或更多所述处理器上执行的装置,
其中所述用于请求加载单元被加载到所述进程中的装置包括:用于加载具有关联于该加载单元的特征集合的可执行程序、动态链接库和动态生成的代码中的一个的装置,以及,
所述用于生成该进程的运行时特征集合的装置包括:用于将所述可执行程序、动态链接库或动态生成的代码的特征集合或运算到之前生成的运行时特征集合中的装置。
从下面对如在附图中示出的本发明的优选实施例的更具体描述中,本发明的前述以及其它特征和优点将显而易见。
附图说明
本发明的优选实施例将在以下结合附图被描述,其中,类似名称表示类似单元。
图1是根据本发明的优选实施例的多处理器计算机系统的框图。
图2是示出根据自适应代码生成的优选实施例的处理器特征集合的示例性格式的示意图。
图3是示出根据自适应代码生成的优选实施例的程序特征集合的示例性格式的示意图。
图4是示出根据本发明的优选实施例的、用于经由生成进程或线程的运行时特征集合的自适应进程分派的方法的流程图。
图5是示出根据本发明的优选实施例的、用于经由生成子进程的运行时特征集合的自适应进程分派的方法的流程图。
图6是示出根据本发明的优选实施例的、用于经由当附加加载单元被请求进行加载时生成进程的已更新运行时特征集合的自适应进程分派的方法的流程图。
具体实施方式
概要
根据本发明的优选实施例的自适应进程分派(或自适应处理器选择)依赖于例如程序特征集合和处理器特征集合的特征集合。这些特征集合的起源对于本发明的目的是不重要的。例如,所述程序特征集合可以由编译器中的自适应代码生成或某种其它机制或者由编译器外部的某种分析工具创建。关于自适应代码生成,应当指出,本发明允许自适应代码生成在异构处理器环境中的使用。
自适应代码生成
自适应代码生成提供一种允许计算机程序当新硬件特征出现时自动利用新硬件特征以及当其不出现时避免使用其的灵活系统。自适应代码生成有效地工作于单处理器上,以及当多处理器计算机系统上的所有处理器是同构的时工作于多处理器计算机系统上。当并非所有处理器都是同构的时(即异构处理器环境),附加机制对于确保正确执行是必要的。这些机制是本申请书的主题。
自适应代码生成(或模型相关代码生成)围绕硬件特征集合的概念被建立。所述硬件特征集合的概念这里用于(关于本部分中讨论的自适应代码生成以及下面部分中讨论的自适应进程分派)表示处理器体系结构家族中的可选特征。所述特征集合包括还未是以及当前并非可选但可能不可用于相同体系结构家族中的将来的处理器模型上的特征。特征集合的每个单元表示出现在体系结构家族中的某些处理器模型中但不出现在同一体系结构家族中的其它处理器模型中的一个“特征”。不同级别的粒度可以对于不同特征是优选的。例如,一个特征可以表示整个功能单元(例如单一指令、多个数据(SIMD)单元和/或图形加速单元),而另一特征可以表示单一指令或一组指令。SIMD单元也称为向量处理器单元或向量媒体扩展(VMX)单元,以及被称为各种商品名,例如AltiVec、Velocity Engine等。
一般地,特征可以表示可选的整个功能单元、可选的功能单元部分、可选的指令,可选的指令集合、可选的指令形式、可选的指令性能方面或体系结构中别处(例如地址翻译硬件、存储器嵌套等中)的可选特征。特征还可以表示被汇总为一个的以上列出的两个或更多独立特征。
特征集合关联于每个不同的处理器模型(这里称为“处理器的特征集合”或“处理器特征集合”),其指示被该处理器模型支持的特征。特征在处理器特征集合中的出现构成被生成为利用该特征的代码将工作于该处理器模型上的约定。特征集合还关联于每个程序(这里称为“程序的特征集合”或“程序特征集合”),其指示所述程序所依赖于的特征(即执行包含在或者是模块或者是程序对象的对象中的代码所需的可选硬件特征)。即,所述程序特征集合基于可选硬件特征被模块或程序对象的使用而被记录。
根据自适应代码生成的优选实施例,每个模块或程序对象将包含指示该对象为被使用所取决于的特征的程序特征集合。除非程序被重建,否则程序将不在不具有所有所需特征的处理器模型上执行。
图2示出了处理器特征集合的示例性格式。图2中所示的处理器特征集合格式是任意数量的可能格式中的一个,以及由于说明性目的被示出。本领域的技术人员将理解,自适应代码生成的精神和范围不限于所述处理器特征集合的任意一种格式。再次参考图2,处理器特征集合200包括多个字段210、220、230和240。取决于特定处理器特征集合,各个字段210、220、230和240每个对应于特定特征,并且每个具有“0”或“1”值。例如,字段210可以对应于SIMD单元,字段220可以对应于图形加速单元,字段230可以对应于设计为支持压缩的单一指令或指令集合,以及字段240可以对应于设计为支持加密的单一指令或指令集合。在图2中所示的特定处理器特征集合200中,字段210、220、230和240的值指示处理器特征集合200所关联于的处理器模型包括SIMD单元、图像加速单元和设计为支持加密的单一指令或指令集合,而不包括设计为支持压缩的单一指令或指令集合。另外,所述处理器特征集合的格式可以包括对应于当前并非可选的但不可用于所述处理器体系结构家族中的将来处理器模型上的特征的一个或更多附加字段、和/或被保留用于将被将来的处理器体系结构家族支持的其它可选特征的字段。同样,所述处理器特征集合的格式可以包括每个组合两个或更多特征的一个或更多字段。
图3示出了程序特征集合的示例性格式。图3中所示的程序特征集合格式是任意数量的可能格式中的一个,并且由于说明性目的被示出。本领域的技术人员将理解,自适应代码生成的精神和范围不限于所述程序特征集合的任意一种格式。再次参考图3,程序特征集合300包括多个字段310、320、330和340。取决于特定处理器特征集合,各个字段310、320、330和340的每个对应于特定特征,以及每个具有“0”或“1”值。例如,字段310可以对应于SIMD单元的使用,字段320可以对应于图形加速单元的使用,字段330可以对应于设计为支持压缩的单一指令或指令集合的使用,以及字段340可以对应于设计为支持加密的单一指令或指令集合的使用。在图3中所示的特定程序特征集合300中,字段310、320、330和340的值指示程序特征集合300所关联于的计算机程序(模块或程序对象)在其代码生成中使用SIMD单元、图形加速单元和设计为支持加密的单一指令或指令集合,但不使用设计为支持压缩的单一指令或指令集合。此外,所述程序特征集合的格式可以包括对应于所述模块或程序对象对当前并非可选的但不可用于所述处理器体系结构家族中的将来处理器模块的特征的使用的一个或更多附加字段、和/或被保留用于所述模块或程序对象对将被将来的处理器体系结构家族支持的其它可选特征的使用的字段。同样,所述程序特征集合的格式可以包括每个组合了两个或更多特征的使用的一个或更多字段。
如上面指出的,自适应代码生成高效地工作于单处理器上,以及当多处理器计算机系统上的所有处理器是同构的时工作于多处理器计算机系统上。然而,在异构处理器环境(例如其中相同处理器家族的不同模型同时共存的多处理器计算机系统)的上下文中,当分派需要出现在处理器家族中的某些处理器模型上但不出现在同一处理器家族中的其它处理器模型上的特定特征的计算机程序时,问题可以产生。即,所述计算机程序可以被分派到缺少所需特征的处理器。
异构处理器环境现在不是特别常见,但在不久的将来很可能变得常见得多。存在建立具有许多处理器的大型计算机系统和使处理器板可热插拔的一般趋势。对于用户而言,想要在某些老处理器保持在所述计算机系统上的同时拔出某些老处理器并用较新的模型取代它们很可能将日益常见。例如,用户可以确定产生异构处理器环境的该慢升级技术是升级64处理器的计算机系统的经济方式。本发明的优选实施例提供一种更灵活的系统,所述系统允许计算机程序当新硬件特征出现在异构处理器环境中时自动利用新硬件特征,以及避免当其不出现时使用其。
详细描述
自适应进程分派
本发明的优选实施例生成被与处理器的至少一个处理器特征集合相比较的进程或线程的运行时特征集合。该机制高效地工作于同构或异构处理器环境中。所述处理器特征集合表示被一个或更多所述处理器所支持的零个、一个或更多可选硬件特征,而所述运行时特征集合表示所述进程或线程所依赖于的零个、一个或更多可选硬件特征(即执行包含在所述进程或线程中的代码所需的零个、一个或更多可选硬件特征)。即,根据本发明的优选实施例,在自适应代码生成中,与仅磁盘上的静态程序相对,特征集合(即所述运行时特征集合)关联于正在运行的进程或线程。所述特征集合的比较(即所述运行时特征集合与至少一个处理器特征集合)确定特定进程或线程是否可以运行在特定处理器上。系统任务分派器将所述进程或线程指派为在由所述比较指示为与所述进程或线程兼容的一个或更多所述处理器上执行。当新特征被添加到所述进程或线程时,所述运行时特征集合被更新,并再次被与至少一个处理器特征集合比较。如果必要,所述系统任务分派器重新指派所述进程或线程。
现在参考图1,计算机系统1000是根据本发明的优选实施例的装置的一种合适实现。计算机系统1000是IBM eServer iSeries计算机系统。然而,本领域的技术人员将理解,本发明的优选实施例的机制和装置同样适用于任意计算机系统,不论计算机系统是复杂多用户计算装置、单一用户工作站还是嵌入式控制系统。如图1中所示,计算机系统1000包括多个处理器110A、110B、110C和110D、主存储器1020、海量存储接口130、显示器接口140和网络接口150。这些系统部件通过总线系统160互连。
图1旨在在高层示出计算机系统1000的代表性主要部件,应当理解,各个部件可以具有比图1中所表示的更高的复杂度,以及所述部件的数量、类型和配置可以改变。特别地,计算机系统1000可以包含与所示的不同数量的处理器。
主存储器1020优选包含数据1021、操作系统1022、系统任务分派器1030、多个处理器特征集合1027A、1027B、1027C和1027D、进程或线程1016、运行时特征集合1015、可执行程序1025、程序特征集合1028、机器代码1029、动态链接库1011、动态链接库特征集合1010和机器代码1012。数据1021表示用作去往或来自计算机系统1000中的任意程序的输入或输出的任意数据。操作系统1022是产业中称为OS/400或IBM i5/OS的多任务操作系统;然而,本领域的技术人员将理解,本发明的精神和范围不限于任意一个操作系统。
进程1016由操作系统1022创建。进程典型包含关于程序资源和程序执行状态的信息。线程(也表示为图1中的单元1016)是存在于进程中并且使用进程资源的计算机指令流。线程可以被所述操作系统调度为作为进程中的独立实体运行。进程可以具有多个线程,其中,每个线程共享进程中的资源并且在同一地址空间中执行。根据本发明的优选实施例,进程或线程1016被提供了运行时特征集合1015。
处理器110A、110B、110C和110D根据本发明的优选实施例可以是同构或异构的。本发明不需要利用自适应代码生成。然而,本发明允许自适应代码生成被应用于异构处理器环境。处理器110A、110B、110C和110D是产业中称为PowerPC AS体系结构的处理器体系结构家族的成员;然而,本领域的技术人员将理解,本发明的精神和范围不限于任意一个处理器体系结构。
因为处理器110A、110B、110C和110D可以是异构的,所以多个处理器特征集合被需要。如图1中所示,处理器特征集合1027A表示被处理器110A支持的处理器体系结构家族的零个、一个或更多可选硬件特征;处理器特征集合1027B表示被处理器110B支持的处理器体系结构家族的零个、一个或更多可选硬件特征;处理器特征集合1027C表示被处理器110C支持的处理器体系结构家族的零个、一个或更多可选硬件特征;以及处理器特征集合1027D表示被处理器110D支持的处理器体系结构家族的零个、一个或更多可选硬件特征。重要的是要指出,单独的处理器特征集合不需要对于每个处理器出现。而是,单独的处理器特征集合仅需要对于每个异构的处理器组出现,即,所述异构的处理器组是支持相同可选硬件特征的处理器的组。例如,特定异构处理器组中的所有处理器可以共享单一处理器特征集合。
处理器特征集合1027A、1027B、1027C和1027D可以具有与图2中所示以及上面在自适应代码生成部分中描述的示例性处理器特征集合格式相同的格式。然而,图2中所示的格式仅是任意数量的可能格式的示例。本领域的技术人员将理解,本发明的精神和范围不限于所述处理器特征集合的任意一种格式。任意集合表示可以被使用。
程序特征集合1028表示机器代码1029依赖于的零个、一个或更多可选硬件特征(即执行机器代码1029所需的零个、一个或更多可选硬件特征)。如上面指出的,程序特征集合1028的起源对于本发明的目的是不重要的。程序特征集合1028可以例如由编译器中的自适应代码生成或某种其它机制创建,或者在编译器外部由分析工具等创建。机器代码1029是程序的可执行代码。可执行程序1025包括机器代码1029和程序特征集合1028。程序特征集合1028可以具有与图3中所示以及上面在自适应代码生成部分中描述的示例性程序特征集合格式相同的格式。然而,图3中所示的格式仅是任意数量的可能格式的示例。本领域的技术人员将理解,本发明的精神和范围不限于所述程序特征集合的任意一种形式。任意集合表示可以被使用。
可执行程序1025可以具有关联于其的一个或更多动态链接库。动态链接库特征集合1010表示关联于可执行程序1025的动态链接库1011依赖于的零个、一个或更多可选硬件特征。典型地,动态链接库是包含在加载时或运行时而非链接期间绑定到程序的数据和可执行代码的文件。动态链接库中的所述代码和数据可以同时被几个应用共享。机器代码1012是所述动态链接库的可执行代码。动态链接库1011包括机器代码1012和动态链接库特征集合1010。动态链接库特征集合1010可以具有与图3中所示以及上面在自适应代码生成部分中描述的示例性程序特征集合格式相同的格式。然而,图3中所示格式仅是任意数量的可能格式的示例。本领域的技术人员将理解,本发明的精神和范围不限于所述动态链接库特征集合的任意一种格式。任意集合表示可以被使用。
运行时特征集合1015表示进程或线程1016依赖于的零个、一个或更多可选硬件特征(即执行所述进程或线程所需的零个、一个或更多可选硬件特征)。根据本发明的优选实施例,每当代码被加载到进程中时,新加载的代码的特征被或运算(OR)到所述运行时特征集合中。所述新加载的代码可以包括可执行程序1025或动态链接库1011或者甚至动态生成的代码(例如由JIT编译器生成的代码)。进程可以在该进程终止之前可以用不同动态链接库运行一整系列程序。例如,尽管图1为清楚起见仅示出了单一可执行程序1025和单一动态链接库1011,但进程1015可以用不同动态链接库1011运行几个可执行程序1025。每个可执行程序1025都具有程序特征集合1028,以及每个动态链接库1011都具有动态链接库特征集合1010。运行时特征集合1015经由或运算程序特征集合1028和任意关联的动态链接库集合1010来生成。在动态生成的代码的情况下,动态生成代码特征集合在更新所述运行时特征集合方面像动态链接库的特征集合那样动作。即,已更新的运行时特征集合经由将所述动态生成的代码的特征集合或运算到所述运行时特征集合中来生成。
运行时特征集合1015以及动态生成代码特征集合可以具有如图3中所示以及上面在自适应代码生成部分中所描述的示例性程序特征集合格式相同的格式。然而,图3中所示的格式仅是任意数量的可能格式的示例。本领域的技术人员将理解,本发明的精神和范围不限于这些特征集合的任意一种格式。任意集合表示可以被使用。
一般地,所述特征集合(即所述处理器特征集合;所述程序特征集合;如果有的话,所述动态链接库特征集合;如果有的话,所述动态生成代码特征集合;以及所述运行时特征集合)不需要具有彼此相同的格式。任意集合表示可以用于每个特征集合。
应当指出,数据1021、操作系统1022、系统任务分派器1030、处理器特征集合1027A、1027B、1027C和1027D、进程/线程1016、运行时特征集合1015、可执行程序1025、程序特征集合1028、机器代码1029、动态链接库1011、动态链接库特征集合1010以及机器代码1012为在一个图中示出所有这些单元的方便性起见而全部被示为驻留在存储器1020中。本领域的技术人员将理解,所述情形不是正常运转模式。程序特征集合1028、机器代码1029和机器代码1012可以在与计算机系统1000分离的计算机系统上生成。在另一计算机系统上,操作系统1022生成运行时特征集合1015并将其与处理器特征集合1027A、1027B、1027C和1027D比较。操作系统1022将实施该检查,以及然后调用系统任务分派器1030来将进程或线程1016指派或重新指派到一个或更多兼容处理器,或者可能调用后端编译器来重建可执行程序1025和/或任意关联的动态链接库1010和/或任意动态生成的代码。本发明的优选实施例明确扩展为计算机系统的任意合适的配置和数量来完成这些任务。这里和在权利要求中描述的“装置”明确扩展为如由上面的示例描述的多计算机配置。
计算机系统1000利用熟知的虚拟寻址机制,所述虚拟寻址机制允许计算机系统1000的程序就像其仅具有对大型、单一存储实体的访问代替与对例如主存储器1010和DASD设备155的多个、小型存储实体的访问那样动作。因此,尽管数据1021、操作系统1022、系统任务分派器1030、处理器特征集合1027A、1027B、1027C和1027D、进程/线程1016、运行时特征集合1015、可执行程序1025、程序特征集合1028、机器代码1029、动态链接库1011、动态链接库特征集合1010以及机器代码1012被示为驻留在主存储器1020中,但本领域的技术人员将认识到,这些项目不必要同时被全部完全包含在主存储器1020中。还应当指出,术语“存储器”这里用于一般地指计算机系统1000的整个虚拟存储器,并且可以包括耦合到计算机系统1000的其它计算机系统的虚拟存储器。例如,存储器可以存在于多层高速缓存中,以及这些高速缓存可以被进一步根据功能划分,从而一个高速缓存保存指令而另一个保存将被所述处理器使用的非指令数据。如在各种所谓的非统一存储器访问(NUMA)计算机体系结构的任一个中已知的那样,多个CPU可以共享公共的主存储器,以及存储器可以进一步被分布和关联于不同CPU或CPU集合。
处理器110A、110B、110C和110D的每个可以从一个或更多微处理器和/或集成电路来构造。处理器110A、110B、110C和110D执行存储在主存储器1020中的程序指令。主存储器1020存储处理器110A、110B、110C和110D可以访问的程序和数据。当计算机系统1000开启时,处理器110A、110B、110C和110D首先执行组成操作系统1022的程序指令。操作系统1022是管理计算机系统1000的资源的复杂程序。这些资源的一些是处理器110A、110B、110C和110D、主存储器1020、海量存储接口130、显示器接口140、网络接口150和系统总线160。根据本发明的优选实施例,操作系统1022包括系统任务分派器1030,该系统任务分派器1030将进程或线程1016分派为在由运行时特征集合1015与处理器特征集合1027A、1027B、1027C和1027D的比较指示为与进程或线程1016兼容的处理器110A、110B、110C和110D的一个或更多上执行。
尽管计算机系统1000被示为仅包含单一系统总线,但本领域的技术人员将理解,本发明的优选实施例可以使用具有多个总线的计算机系统来实现。另外,所使用的接口的每个都包括用于从处理器110A、110B、110C和110D卸载计算密集型处理的单独的、被完全编程的微处理器。然而,本领域的技术人员将理解,本发明的优选实施例同样适用于仅使用I/O适配器来实施类似功能的计算机系统。
显示器接口140用于将一个或更多显示器165直接连接到计算机系统1000。可以是非智能(即哑的)终端或可完全编程工作站的这些显示器用于允许系统管理员和用户与计算机系统1000通信。然而,应当指出,尽管显示器接口140被提供用于支持与一个或更多显示器165的通信,但计算机系统1000不必须需要显示器165,因为所有所需的与用户和其它进程的交互可以经由网络接口150发生。
网络接口150用于将其它计算机系统和/或工作站(例如图1中的175)穿越网络170连接到计算机系统1000。不管网络连接170是使用当前的模拟和/或数字技术还是经由将来的某种联网机制来进行,不论计算机系统1000可以怎样被连接到其它计算机系统和/或工作站,本发明的优选实施例同样适用。另外,许多不同网络协议可以用于实现网络。这些协议是允许计算机穿越网络170通信的专用计算机程序。TCP/IP(传输控制协议/因特网协议)是合适的网络协议的示例。
在这一点上,重要的是要指出,尽管本发明的优选实施例已经并且将继续在完全功能计算机系统的上下文中被描述,但本领域的技术人员将理解,本发明能够被分布为多种形式的程序产品,以及,不论用于实际实施所述分布的特定类型的信号承载媒体,本发明的优选实施例都同样适用。合适的信号承载媒体的示例包括:例如软盘和CD-RW(例如图1中的195)的可记录类型媒体,以及例如数字和模拟通信链路的传输类型媒体。
特征集合关联于每个“加载单元”,其中,加载单元是总是作为单一实体被加载的代码的集合。该特征集合可以由编译器根据自适应代码生成的方法或通过例如单独分析工具的其它装置来生成。根据本发明的优选实施例,加载单元可以是可执行程序、动态链接库或动态生成的代码(例如由JIT编译器生成的代码)。关于第一种类型的加载单元(即可执行程序),特征集合关联于每个程序(这里称为“程序的特征集合”或“程序特征集合”),其指示所述程序依赖于的特征(如果有的话)(即执行包含在所述程序中的代码所需的零个、一个或更多可选硬件特征)。所述程序特征集合基于可选硬件特征被所述程序的使用来记录。关于第二种类型的加载单元(即动态链接库),特征集合也关联于每个动态链接库(这里称为“动态链接库的特征集合”或“动态链接库特征集合”),其指示所述动态链接库依赖于的特征(如果有的话)(即执行包含在所述动态链接库中的代码所需的零个、一个或更多可选硬件特征)。所述动态链接库特征集合基于可选硬件特征被所述动态链接库的使用来记录。关于第三种类型的加载单元(即动态生成的代码),特征集合也关联于所述动态生成的代码(这里称为“动态生成代码的特征集合”或“动态生成代码特征集合”),其指示所述动态生成的代码依赖于的特征(如果有的话)(即执行包含在所述动态生成代码中的代码所需的零个、一个或更多可选硬件特征)。所述动态生成代码特征集合基于可选硬件特征被所述动态生成代码的使用来记录。
另外,特征集合关联于每个进程或线程(这里称为“运行时特征集合”或“进程的特征集合(feature set of the process)”或“进程的特征集合(process’s feature set)”。每当加载单元被加载到进程中时,该加载单元的特征集合首先被或运算到该进程的运行时特征集合中。随着时间,所述加载单元可以包括一个或更多程序、零个或更多动态链接库以及甚至可能某种动态生成的代码(例如由JIT编译器生成的代码)。所述运行时特征集合被定义为所述程序特征集合、任意关联的动态链接库的特征集合和任意动态生成的代码的特征集合的联合。每当所述运行时特征集合由于即将被加载的代码中的新特征而将改变时,所述操作系统首先确定是否存在可以支持该新运行时特征集合的可用处理器。如果是这样,则所述代码被加载,以及所述进程放弃其时间片。下一次所述进程被分派时,所述系统任务分派器将指派具有所有所需特征的一个或更多处理器。
如果没有任何具有所有所需特征的处理器存在,则所述代码(即新的加载单元)不能被加载。此时的选项包括获得异常、或强制该新加载单元在被加载之前用较少特征被重建。在后一种情况下,自适应代码生成可以如在同时提交的命名为“METHOD,APPARATUS,AND COMPUTERPROGRAM PRODUCT FOR ADAPTIVELY GENERATING CODEFOR A COMPUTER PROGRAM”的相关美国专利申请(代理卷号ROC920050022US1)中描述的那样被使用,其中,所述专利申请被转让给即时申请受让人,并且其因此在这里被完整引入作为参考。例如,所述新加载单元可以自动从其中间表示来重建,以便经由应用所述处理器特征集合而仅利用可用处理器的那些特征。
如上面提到的,所述加载单元可以包括动态生成的代码。所述加载单元可以例如当JIT编译器在生成之前未在正在运行的进程中被使用的代码时利用一个或更多特征时被生成。例如,所述JIT编译器可以基于例如高使用率的桌些准则来选择进行编译或重新编译的过程。根据本发明的优选实施例,所述JIT编译器将导致操作系统在返回对所述代码的控制之前将所述进程的运行时特征集合更新为包括所述新特征,以及所述进程然后将放弃其时间片。当下一次被分派时,所述进程将在可以支持所述已更新运行时特征集合的一个或更多可用处理器上运行所述新近被编译的代码。
在本发明的优选实施例中,所述运行时特征集合是非渐减的。即,一旦特征被添加到所述运行时特征集合,其直到所述进程或线程的终止前都停留在那里。所述情形是保守的,但其因为进程或线程是否以动态链接库结束典型是未知的而通常是必要的。在一些计算机系统中,动态链接库明确被卸载是可能的,但这在实际中很少使用。在其中对动态链接库的明确卸载是可能的所述计算机系统中,本发明的可替换实施例可以被使用。例如,所述运行时特征集合可以实现为用于跟踪多少加载单元已请求了每个特征的使用的计数向量(而非简单集合)。所述对特征的计数将在需要所述特征的加载单元被加载时被递增,以及在所述加载单元被卸载时被递减。当对于特征的所述计数达到零时,所述特征不再由于处理器兼容性而被所述进程或线程需要。本领域的技术人员将理解,在本发明的精神和范围内,超越该特定计数向量实现的其它变型是可能的。
图4是示出根据本发明的优选实施例的、用于经由生成进程或线程的运行时特征集合的自适应进程分派的方法400的流程图。方法400经由生成进程或线程的运行时特征集合开始(步骤410)。所述运行时特征集合由所述操作系统在每次加载单元被加载到进程中时经由将该加载单元的特征集合或运算到该进程(新的顶级进程或现有进程)的运行时特征集合中来生成。随着时间,所述加载单元的特征集合可以包括一个或更多程序特征集合、零个或更多关联的动态链接库的特征集合以及任意动态生成的代码的特征集合。每当所述运行时特征集合由于即将被加载的代码中的新特征而将改变时,所述操作系统首先确定是否存在可以支持该新运行时特征集合的可用处理器。这经由将所述运行时特征集合与至少一个处理器特征集合进行比较来完成(步骤420)。该特征集合的比较确定特定进程或线程是否可以运行在特定处理器上。如果存在可以支持所述新运行时特征集合的可用处理器,则所述代码被加载,以及所述进程放弃其时间片。下一次所述进程被分派时,所述系统任务分派器将把所述进程指派为在具有所有所需特征的一个或更多处理器上执行(步骤430)。由此,甚至在异构处理器环境中,所述进程或线程将不被指派为在不兼容的处理器上执行。如果兼容处理器不驻留在所述计算机系统上,则所述代码(即新加载代码)不能被加载,以及异常被获得,或者所述新加载单元(其包括不被可用处理器支持的一个或更多特征)可以根据自适应代码生成被重建。
图5是示出根据本发明的优选实施例的、用于经由生成子进程的运行时特征集合的自适应进程分派的方法500的流程图。进程经由从父进程“分叉(forking)”而被创建(步骤510)。当父进程分叉时,该进程的精确副本被创建。分叉之后,该子进程典型加载和执行程序(步骤520)。方法500经由生成该进程的运行时特征集合而继续(步骤530)。所述运行时特征集合每次当加载单元被加载到进程中时经由将所述加载单元的特征集合或运算到所述子进程的运行时特征集合中而被操作系统生成。随着时间,所述加载单元的特征集合可以包括一个或更多程序特征集合、零个或更多关联的动态链接库的特征集合以及任意动态生成的代码的特征集合。每当所述运行时特征集合由于即将被加载的代码中的新特征而将改变时,所述操作系统首先确定是否存在可以支持所述新运行时特征集合的可用处理器。这经由将所述运行时特征集合与至少一个处理器特征集合进行比较来完成(步骤540)。该特征集合的比较确定所述子进程是否可以在特定处理器上运行。如果存在可以支持所述新运行时特征集合的可用处理器,则所述代码被加载,以及所述进程放弃其时间片。下一次所述进程被分派时,所述系统任务分派器将把所述进程指派为在具有所有所需特征的一个或更多处理器上执行(步骤550)。由此,甚至在异构处理器环境中,所述子进程将不被指派为在不兼容的处理器上执行。如果兼容处理器不驻留在所述计算机系统上,则所述代码(即新加载代码)不能被加载,以及异常被获得,或者所述新加载单元(其包括不被可用处理器支持的一个或更多特征)可以根据自适应代码生成被重建。
如上面指出的,本发明可以适用于线程。线程从其父线程继承其特征集合,以及以同样的方式修改其特征集合直到终止。由此,在本发明的可替换实施例中,图5中所示的方法500可以被修改为适用于线程而非进程。
图6是示出根据本发明的优选实施例的、用于当附加加载单元被请求被加载时经由生成进程的已更新运行时特征集合的自适应进程指派的方法600的流程图。新进程被创建(步骤605)并且加载将被执行的程序(步骤610)。此时,操作系统生成所述进程的运行时特征集合(步骤615)。操作系统确定是否存在可以支持所述运行时特征集合的可用处理器。这经由将所述进程的运行时特征集合与至少一个处理器特征集合进行比较来完成(步骤620)。该特征集合的比较确定所述进程是否可以在特定处理器上执行。如果存在可以支持所述运行时特征集合的可用处理器,则所述代码被加载,以及所述系统任务分派器将把所述进程指派为在具有所有所需特征的一个或更多处理器上执行(步骤625)。
方法600经由做出关于附加加载单元是否保持将被加载的确定而继续(步骤630)。随着时间,所述附加加载单元可以包括一个或更多附加可执行程序、零个或更多关联的动态链接库以及动态生成的代码。如果没有任何附加加载单元保持将被加载(步骤630:否),则方法600结束。另一方面,如果附加加载单元保持将被加载(步骤630:是),则其特征集合与当前的运行时特征集合被或运算以生成已更新的运行时特征集合(步骤640)。接下来,所述进程的已更新运行时特征集合被与该进程当前被指派到的处理器的处理器特征集合进行比较(步骤645)。该特征集合的比较确定所述已修改进程是否可以在当前指派的处理器上运行。当进程的特征集合被修改时,所述系统任务分派器被查询以发现所述进程是否仍然与该进程正运行于的处理器兼容。如果所述进程仍然与当前指派的处理器兼容(步骤650:是),则所述代码被加载,以及方法600返回步骤630。另一方面,如果所述进程不再与当前指派的处理器兼容(步骤650:否)并且不存在兼容的可用处理器,则所述代码不能被加载,以及所述进程放弃其时间片。如果存在可以支持所述已更新运行时特征集合的可用处理器,则所述代码被加载,以及所述进程放弃其时间片。下一次所述进程被分派时,所述系统任务分派器将把该进程移动到兼容的处理器上(步骤655)。然后,方法600返回步骤630。由此,甚至当进程在异构处理器环境中被修改时,该进程将不被指派为在不兼容的处理器上执行。如果兼容处理器不驻留在所述计算机系统上,则所述代码(即最新近被请求的加载单元)不能被加载,以及异常被获得,或者所述最新近被请求的加载单元可以根据自适应代码生成被重建。
本领域的技术人员将理解,在本发明的范围内,很多变型是可能的。由此,尽管本发明已参考其优选实施例被特别示出和描述,但本领域的技术人员将理解,在不脱离本发明的精神和范围的情况下,可以在其中作出形式和细节上的所述和其它改变。
Claims (12)
1.一种用于在具有多个处理器的计算机系统中的自适应进程分派的方法,所述方法包括以下步骤:
创建进程;
请求加载单元被加载到该进程中,其中,所述加载单元是总是作为单一实体被加载的代码的集合,且具有关联于该加载单元的特征集合;
基于所述加载单元的特征集合生成该进程的运行时特征集合;
将所述运行时特征集合与至少一个处理器特征集合进行比较,其中,每个处理器特征集合关联于一个或更多所述处理器;
将所述进程指派为在由所述比较步骤指示为与该进程兼容的一个或更多所述处理器上执行,
其中所述请求加载单元被加载到所述进程中的步骤包括以下步骤:加载具有关联于该加载单元的特征集合的可执行程序、动态链接库和动态生成的代码中的一个,以及,
所述生成该进程的运行时特征集合的步骤包括以下步骤:将所述可执行程序、动态链接库或动态生成的代码的特征集合或运算到之前生成的运行时特征集合中。
2.根据权利要求1所述的用于在具有多个处理器的计算机系统中的自适应进程分派的方法,其中,所述处理器是处理器体系结构家族的成员,以及每个处理器特征集合表示被该处理器特征集合所关联于的所述一个或更多所述处理器支持的所述处理器体系结构家族的零个、一个或更多可选硬件特征,以及其中,所述运行时特征集合表示所述进程所依赖于的零个、一个或更多可选硬件特征。
3.根据权利要求1所述的用于在具有多个处理器的计算机系统中的自适应进程分派的方法,其中,所述至少一个处理器特征集合包括包含在所述计算机系统的操作系统中的第一处理器特征集合和第二处理器特征集合,以及其中,所述第一处理器特征集合所关联于的所述一个或更多处理器相对于所述第二处理器特征集合所关联于的所述一个或更所述多处理器是异构的。
4.根据权利要求1所述的用于在具有多个处理器的计算机系统中的自适应进程分派的方法,其中,所述加载单元是可执行程序、动态链接库和动态生成的代码中的一个。
5.根据权利要求1所述的用于在具有多个处理器的计算机系统中的自适应进程分派的方法,进一步包括以下步骤:
随后请求另一加载单元被加载到所述进程中,其中,该另一加载单元具有关联于该另一加载单元的特征集合;
经由将所述另一加载单元的特征集合和所述运行时特征集合进行“或”运算来更新所述运行时特征集合;
将所述已更新的运行时特征集合与至少一个处理器特征集合进行比较;
如果所述比较已更新运行时特征集合与至少一个处理器特征集合的步骤指示所述指派步骤将所述进程指派到的一个或更多处理器与所述进程不兼容,则将所述进程重新指派为在由所述比较已更新运行时特征集合与至少一个处理器特征集合的步骤指示为与所述进程兼容的一个或更多所述处理器上执行。
6.根据权利要求5所述的用于在具有多个处理器的计算机系统中的自适应进程分派的方法,其中,所述请求加载单元被加载到该进程中步骤包括以下步骤:请求动态生成的代码的加载,以及其中,所述随后请求另一加载单元被加载到所述进程中步骤包括以下步骤:请求可执行程序、动态链接库和其它动态生成的代码中的一个的加载。
7.一种用于在具有多个处理器的计算机系统中的自适应进程分派的系统,所述系统包括:
用于创建进程的装置;
用于请求加载单元被加载到该进程中的装置,其中,所述加载单元是总是作为单一实体被加载的代码的集合,且具有关联于该加载单元的特征集合;
用于基于所述加载单元的特征集合生成该进程的运行时特征集合的装置;
用于将所述运行时特征集合与至少一个处理器特征集合进行比较的装置,其中,每个处理器特征集合关联于一个或更多所述处理器;
用于将所述进程指派为在由所述比较装置指示为与该进程兼容的一个或更多所述处理器上执行的装置,
其中所述用于请求加载单元被加载到所述进程中的装置包括:用于加载具有关联于该加载单元的特征集合的可执行程序、动态链接库和动态生成的代码中的一个的装置,以及,
所述用于生成该进程的运行时特征集合的装置包括:用于将所述可执行程序、动态链接库或动态生成的代码的特征集合或运算到之前生成的运行时特征集合中的装置。
8.根据权利要求7所述的用于在具有多个处理器的计算机系统中的自适应进程分派的系统,其中,所述处理器是处理器体系结构家族的成员,以及每个处理器特征集合表示被该处理器特征集合所关联于的所述一个或更多所述处理器支持的所述处理器体系结构家族的零个、一个或更多可选硬件特征,以及其中,所述运行时特征集合表示所述进程所依赖于的零个、一个或更多可选硬件特征。
9.根据权利要求7所述的用于在具有多个处理器的计算机系统中的自适应进程分派的系统,其中,所述至少一个处理器特征集合包括包含在所述计算机系统的操作系统中的第一处理器特征集合和第二处理器特征集合,以及其中,所述第一处理器特征集合所关联于的所述一个或更多处理器相对于所述第二处理器特征集合所关联于的所述一个或更所述多处理器是异构的。
10.根据权利要求7所述的用于在具有多个处理器的计算机系统中的自适应进程分派的系统,其中,所述加载单元是可执行程序、动态链接库和动态生成的代码中的一个。
11.根据权利要求7所述的用于在具有多个处理器的计算机系统中的自适应进程分派的系统,进一步包括:
用于随后请求另一加载单元被加载到所述进程中的装置,其中,该另一加载单元具有关联于该另一加载单元的特征集合;
用于经由将所述另一加载单元的特征集合和所述运行时特征集合进行“或”运算来更新所述运行时特征集合的装置;
用于将所述已更新的运行时特征集合与至少一个处理器特征集合进行比较的装置;
用于如果所述比较已更新运行时特征集合与至少一个处理器特征集合的装置指示所述指派装置将所述进程指派到的一个或更多处理器与所述进程不兼容,则将所述进程重新指派为在由所述比较已更新运行时特征集合与至少一个处理器特征集合的装置指示为与所述进程兼容的一个或更多所述处理器上执行的装置。
12.根据权利要求11所述的用于在具有多个处理器的计算机系统中的自适应进程分派的系统,其中,所述用于请求加载单元被加载到该进程中的装置包括:用于请求动态生成的代码的加载的装置,以及其中,所述用于随后请求另一加载单元被加载到所述进程中的装置包括:用于请求可执行程序、动态链接库和其它动态生成的代码中的一个的加载的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/197,605 US20070033592A1 (en) | 2005-08-04 | 2005-08-04 | Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors |
US11/197,605 | 2005-08-04 | ||
PCT/EP2006/065016 WO2007017456A1 (en) | 2005-08-04 | 2006-08-03 | Adaptive process dispatch in a computer system having a plurality of processors |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101233489A CN101233489A (zh) | 2008-07-30 |
CN101233489B true CN101233489B (zh) | 2010-11-10 |
Family
ID=37106453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800284295A Expired - Fee Related CN101233489B (zh) | 2005-08-04 | 2006-08-03 | 自适应进程分派的方法和系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20070033592A1 (zh) |
EP (1) | EP1920331A1 (zh) |
CN (1) | CN101233489B (zh) |
CA (1) | CA2616070A1 (zh) |
TW (1) | TW200719231A (zh) |
WO (1) | WO2007017456A1 (zh) |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8849968B2 (en) * | 2005-06-20 | 2014-09-30 | Microsoft Corporation | Secure and stable hosting of third-party extensions to web services |
US8074231B2 (en) | 2005-10-26 | 2011-12-06 | Microsoft Corporation | Configuration of isolated extensions and device drivers |
US20070094495A1 (en) * | 2005-10-26 | 2007-04-26 | Microsoft Corporation | Statically Verifiable Inter-Process-Communicative Isolated Processes |
KR101307021B1 (ko) * | 2005-12-28 | 2013-09-11 | 밴트릭스 코오퍼레이션 | 멀티미디어 세션을 위한 멀티-유저 실시간 트랜스코딩시스템 및 방법 |
US8032898B2 (en) * | 2006-06-30 | 2011-10-04 | Microsoft Corporation | Kernel interface with categorized kernel objects |
US10013268B2 (en) | 2006-08-29 | 2018-07-03 | Prometric Inc. | Performance-based testing system and method employing emulation and virtualization |
WO2008118613A1 (en) * | 2007-03-01 | 2008-10-02 | Microsoft Corporation | Executing tasks through multiple processors consistently with dynamic assignments |
US8789063B2 (en) * | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
EP3413198A1 (en) * | 2007-04-11 | 2018-12-12 | Apple Inc. | Data parallel computing on multiple processors |
AU2011253819B2 (en) * | 2007-04-11 | 2014-05-22 | Apple Inc. | Parallel runtime execution on multiple processors |
AU2011253721B8 (en) * | 2007-04-11 | 2014-06-26 | Apple Inc. | Data parallel computing on multiple processors |
US11836506B2 (en) | 2007-04-11 | 2023-12-05 | Apple Inc. | Parallel runtime execution on multiple processors |
US8341611B2 (en) | 2007-04-11 | 2012-12-25 | Apple Inc. | Application interface on multiple processors |
US8108633B2 (en) * | 2007-04-11 | 2012-01-31 | Apple Inc. | Shared stream memory on multiple processors |
US8276164B2 (en) | 2007-05-03 | 2012-09-25 | Apple Inc. | Data parallel computing on multiple processors |
US8286196B2 (en) * | 2007-05-03 | 2012-10-09 | Apple Inc. | Parallel runtime execution on multiple processors |
US8230425B2 (en) * | 2007-07-30 | 2012-07-24 | International Business Machines Corporation | Assigning tasks to processors in heterogeneous multiprocessors |
US20090055810A1 (en) * | 2007-08-21 | 2009-02-26 | Nce Technologies Inc. | Method And System For Compilation And Execution Of Software Codes |
US7921261B2 (en) | 2007-12-18 | 2011-04-05 | International Business Machines Corporation | Reserving a global address space |
US7925842B2 (en) | 2007-12-18 | 2011-04-12 | International Business Machines Corporation | Allocating a global shared memory |
US8275947B2 (en) * | 2008-02-01 | 2012-09-25 | International Business Machines Corporation | Mechanism to prevent illegal access to task address space by unauthorized tasks |
US8146094B2 (en) * | 2008-02-01 | 2012-03-27 | International Business Machines Corporation | Guaranteeing delivery of multi-packet GSM messages |
US7844746B2 (en) * | 2008-02-01 | 2010-11-30 | International Business Machines Corporation | Accessing an effective address and determining whether the effective address is associated with remotely coupled I/O adapters |
US8214604B2 (en) * | 2008-02-01 | 2012-07-03 | International Business Machines Corporation | Mechanisms to order global shared memory operations |
US8893126B2 (en) * | 2008-02-01 | 2014-11-18 | International Business Machines Corporation | Binding a process to a special purpose processing element having characteristics of a processor |
US8484307B2 (en) * | 2008-02-01 | 2013-07-09 | International Business Machines Corporation | Host fabric interface (HFI) to perform global shared memory (GSM) operations |
US8200910B2 (en) * | 2008-02-01 | 2012-06-12 | International Business Machines Corporation | Generating and issuing global shared memory operations via a send FIFO |
US8239879B2 (en) * | 2008-02-01 | 2012-08-07 | International Business Machines Corporation | Notification by task of completion of GSM operations at target node |
US8255913B2 (en) * | 2008-02-01 | 2012-08-28 | International Business Machines Corporation | Notification to task of completion of GSM operations by initiator node |
US8225325B2 (en) | 2008-06-06 | 2012-07-17 | Apple Inc. | Multi-dimensional thread grouping for multiple processors |
US8286198B2 (en) | 2008-06-06 | 2012-10-09 | Apple Inc. | Application programming interfaces for data parallel computing on multiple processors |
US9703595B2 (en) * | 2008-10-02 | 2017-07-11 | Mindspeed Technologies, Llc | Multi-core system with central transaction control |
US8683471B2 (en) * | 2008-10-02 | 2014-03-25 | Mindspeed Technologies, Inc. | Highly distributed parallel processing on multi-core device |
US8429665B2 (en) * | 2010-03-19 | 2013-04-23 | Vmware, Inc. | Cache performance prediction, partitioning and scheduling based on cache pressure of threads |
US8990820B2 (en) * | 2008-12-19 | 2015-03-24 | Microsoft Corporation | Runtime task with inherited dependencies for batch processing |
CN101482813B (zh) * | 2009-02-24 | 2012-02-29 | 上海大学 | 一种线程并行执行优化方法 |
US9569270B2 (en) * | 2009-04-21 | 2017-02-14 | Empire Technology Development Llc | Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts |
US9189282B2 (en) * | 2009-04-21 | 2015-11-17 | Empire Technology Development Llc | Thread-to-core mapping based on thread deadline, thread demand, and hardware characteristics data collected by a performance counter |
US20110066830A1 (en) * | 2009-09-11 | 2011-03-17 | Andrew Wolfe | Cache prefill on thread migration |
US8881157B2 (en) * | 2009-09-11 | 2014-11-04 | Empire Technology Development Llc | Allocating threads to cores based on threads falling behind thread completion target deadline |
KR101572879B1 (ko) | 2009-04-29 | 2015-12-01 | 삼성전자주식회사 | 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 |
US8332854B2 (en) * | 2009-05-19 | 2012-12-11 | Microsoft Corporation | Virtualized thread scheduling for hardware thread optimization based on hardware resource parameter summaries of instruction blocks in execution groups |
US8359374B2 (en) * | 2009-09-09 | 2013-01-22 | Vmware, Inc. | Fast determination of compatibility of virtual machines and hosts |
KR20110116553A (ko) * | 2010-04-19 | 2011-10-26 | 삼성전자주식회사 | 미디어 프로세싱 애플리케이션 실행 장치 및 방법 |
CN101916296B (zh) * | 2010-08-29 | 2012-12-19 | 武汉天喻信息产业股份有限公司 | 基于文件的海量数据处理方法 |
US9235458B2 (en) | 2011-01-06 | 2016-01-12 | International Business Machines Corporation | Methods and systems for delegating work objects across a mixed computer environment |
US9052968B2 (en) * | 2011-01-17 | 2015-06-09 | International Business Machines Corporation | Methods and systems for linking objects across a mixed computer environment |
WO2012141677A1 (en) | 2011-04-11 | 2012-10-18 | Hewlett-Packard Development Company, L.P. | Performing a task in a system having different types of hardware resources |
JP5966509B2 (ja) * | 2012-03-29 | 2016-08-10 | 富士通株式会社 | プログラム、コード生成方法および情報処理装置 |
KR101893982B1 (ko) | 2012-04-09 | 2018-10-05 | 삼성전자 주식회사 | 분산 처리 시스템, 분산 처리 시스템의 스케줄러 노드 및 스케줄 방법, 및 이를 위한 프로그램 생성 장치 |
CN102682741B (zh) * | 2012-05-30 | 2014-12-03 | 华为技术有限公司 | 一种多显示控制系统及多显示控制系统的实现方法 |
US20150007196A1 (en) * | 2013-06-28 | 2015-01-01 | Intel Corporation | Processors having heterogeneous cores with different instructions and/or architecural features that are presented to software as homogeneous virtual cores |
US9588804B2 (en) * | 2014-01-21 | 2017-03-07 | Qualcomm Incorporated | System and method for synchronous task dispatch in a portable device |
US9905921B2 (en) | 2015-03-05 | 2018-02-27 | Kymeta Corporation | Antenna element placement for a cylindrical feed antenna |
US11513805B2 (en) * | 2016-08-19 | 2022-11-29 | Wisconsin Alumni Research Foundation | Computer architecture with synergistic heterogeneous processors |
CN109388430B (zh) * | 2017-08-02 | 2022-07-22 | 丰郅(上海)新能源科技有限公司 | 实现微处理器对外设硬件控制的方法 |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4394727A (en) * | 1981-05-04 | 1983-07-19 | International Business Machines Corporation | Multi-processor task dispatching apparatus |
ES2104580T3 (es) * | 1989-02-24 | 1997-10-16 | At & T Corp | Planificacion adaptativa de tareas para sistemas multiproceso. |
EP0422310A1 (en) * | 1989-10-10 | 1991-04-17 | International Business Machines Corporation | Distributed mechanism for the fast scheduling of shared objects |
US5185861A (en) * | 1991-08-19 | 1993-02-09 | Sequent Computer Systems, Inc. | Cache affinity scheduler |
FR2683344B1 (fr) * | 1991-10-30 | 1996-09-20 | Bull Sa | Systeme multiprocesseur avec moyens microprogrammes pour la repartition des processus aux processeurs. |
US5394547A (en) * | 1991-12-24 | 1995-02-28 | International Business Machines Corporation | Data processing system and method having selectable scheduler |
US5301324A (en) * | 1992-11-19 | 1994-04-05 | International Business Machines Corp. | Method and apparatus for dynamic work reassignment among asymmetric, coupled processors |
US5864683A (en) * | 1994-10-12 | 1999-01-26 | Secure Computing Corporartion | System for providing secure internetwork by connecting type enforcing secure computers to external network for limiting access to data based on user and process access rights |
US5600810A (en) * | 1994-12-09 | 1997-02-04 | Mitsubishi Electric Information Technology Center America, Inc. | Scaleable very long instruction word processor with parallelism matching |
US6513057B1 (en) * | 1996-10-28 | 2003-01-28 | Unisys Corporation | Heterogeneous symmetric multi-processing system |
KR100241894B1 (ko) * | 1997-05-07 | 2000-02-01 | 윤종용 | 개인통신 시스템의 코드분할 접속방식 기지국 시스템에서 소프트웨어 관리방법 |
US6249886B1 (en) * | 1997-10-17 | 2001-06-19 | Ramsesh S. Kalkunte | Computer system and computer implemented process for performing user-defined tests of a client-server system with run time compilation of test results |
US6625638B1 (en) * | 1998-04-30 | 2003-09-23 | International Business Machines Corporation | Management of a logical partition that supports different types of processors |
US6526416B1 (en) * | 1998-06-30 | 2003-02-25 | Microsoft Corporation | Compensating resource managers |
US6539542B1 (en) * | 1999-10-20 | 2003-03-25 | Verizon Corporate Services Group Inc. | System and method for automatically optimizing heterogenous multiprocessor software performance |
US6421778B1 (en) * | 1999-12-20 | 2002-07-16 | Intel Corporation | Method and system for a modular scalability system |
US6768901B1 (en) * | 2000-06-02 | 2004-07-27 | General Dynamics Decision Systems, Inc. | Dynamic hardware resource manager for software-defined communications system |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
JP4123712B2 (ja) * | 2000-11-27 | 2008-07-23 | 株式会社日立製作所 | 通信処理方法ならびに通信処理プログラムが記録される記録媒体 |
US6768983B1 (en) * | 2000-11-28 | 2004-07-27 | Timbre Technologies, Inc. | System and method for real-time library generation of grating profiles |
US20020165839A1 (en) * | 2001-03-14 | 2002-11-07 | Taylor Kevin M. | Segmentation and construction of segmentation classifiers |
US7076773B2 (en) * | 2001-03-20 | 2006-07-11 | International Business Machines Corporation | Object oriented apparatus and method for allocating objects on an invocation stack in a dynamic compilation environment |
US7140010B2 (en) * | 2001-03-30 | 2006-11-21 | Sun Microsystems, Inc. | Method and apparatus for simultaneous optimization of code targeting multiple machines |
US20030046659A1 (en) * | 2001-06-19 | 2003-03-06 | Shimon Samoocha | Code generator for viterbi algorithm |
US7203943B2 (en) * | 2001-10-31 | 2007-04-10 | Avaya Technology Corp. | Dynamic allocation of processing tasks using variable performance hardware platforms |
US20030135716A1 (en) * | 2002-01-14 | 2003-07-17 | Gil Vinitzky | Method of creating a high performance virtual multiprocessor by adding a new dimension to a processor's pipeline |
US7380238B2 (en) * | 2002-04-29 | 2008-05-27 | Intel Corporation | Method for dynamically adding new code to an application program |
US7275249B1 (en) * | 2002-07-30 | 2007-09-25 | Unisys Corporation | Dynamically generating masks for thread scheduling in a multiprocessor system |
WO2004015570A1 (en) * | 2002-08-02 | 2004-02-19 | Telefonaktiebolaget Lm Ericsson (Publ) | Optimised code generation |
US7086043B2 (en) * | 2002-10-29 | 2006-08-01 | International Business Machines Corporation | Compiler apparatus and method for unrolling a superblock in a computer program |
US7228541B2 (en) * | 2003-01-17 | 2007-06-05 | National Instruments Corporation | Creation of application system installer |
US7509644B2 (en) * | 2003-03-04 | 2009-03-24 | Secure 64 Software Corp. | Operating system capable of supporting a customized execution environment |
US7386838B2 (en) * | 2003-04-03 | 2008-06-10 | International Business Machines Corporation | Method and apparatus for obtaining profile data for use in optimizing computer programming code |
US20050022173A1 (en) * | 2003-05-30 | 2005-01-27 | Codito Technologies Private Limited | Method and system for allocation of special purpose computing resources in a multiprocessor system |
US7219330B2 (en) * | 2003-06-26 | 2007-05-15 | Microsoft Corporation | Extensible metadata |
US8296771B2 (en) * | 2003-08-18 | 2012-10-23 | Cray Inc. | System and method for mapping between resource consumers and resource providers in a computing system |
US7363484B2 (en) * | 2003-09-15 | 2008-04-22 | Hewlett-Packard Development Company, L.P. | Apparatus and method for selectively mapping proper boot image to processors of heterogeneous computer systems |
US7587712B2 (en) * | 2003-12-19 | 2009-09-08 | Marvell International Ltd. | End-to-end architecture for mobile client JIT processing on network infrastructure trusted servers |
JP2005210649A (ja) * | 2004-01-26 | 2005-08-04 | Kato Electrical Mach Co Ltd | 携帯端末のスライド機構 |
US7434213B1 (en) * | 2004-03-31 | 2008-10-07 | Sun Microsystems, Inc. | Portable executable source code representations |
US8112618B2 (en) * | 2004-04-08 | 2012-02-07 | Texas Instruments Incorporated | Less-secure processors, integrated circuits, wireless communications apparatus, methods and processes of making |
US7424719B2 (en) * | 2004-08-02 | 2008-09-09 | Hewlett-Packard Development Company, L.P. | Application with multiple embedded drivers |
-
2005
- 2005-08-04 US US11/197,605 patent/US20070033592A1/en not_active Abandoned
-
2006
- 2006-08-02 TW TW095128320A patent/TW200719231A/zh unknown
- 2006-08-03 WO PCT/EP2006/065016 patent/WO2007017456A1/en active Application Filing
- 2006-08-03 EP EP06778148A patent/EP1920331A1/en not_active Withdrawn
- 2006-08-03 CN CN2006800284295A patent/CN101233489B/zh not_active Expired - Fee Related
- 2006-08-03 CA CA002616070A patent/CA2616070A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
CA2616070A1 (en) | 2007-02-15 |
WO2007017456A1 (en) | 2007-02-15 |
CN101233489A (zh) | 2008-07-30 |
US20070033592A1 (en) | 2007-02-08 |
TW200719231A (en) | 2007-05-16 |
EP1920331A1 (en) | 2008-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101233489B (zh) | 自适应进程分派的方法和系统 | |
CN100570565C (zh) | 在管理程序中提供基于策略的操作系统服务的方法和系统 | |
US9904527B1 (en) | Optimizing API implementer programs using fine-grained code analysis | |
JP5071913B2 (ja) | 同時物理プロセッサ再割り当て方法、システム、およびプログラム | |
JP4690988B2 (ja) | 持続的なユーザレベルスレッド用の装置、システムおよび方法 | |
US8635595B2 (en) | Method and system for managing non-compliant objects | |
US10277477B2 (en) | Load response performance counters | |
US20070033572A1 (en) | Method, apparatus, and computer program product for adaptively generating code for a computer program | |
JP2013524386A (ja) | ランスペース方法、システムおよび装置 | |
US20070204271A1 (en) | Method and system for simulating a multi-CPU/multi-core CPU/multi-threaded CPU hardware platform | |
US8364908B2 (en) | Migrating program objects in a multi-node computer system | |
KR20040028805A (ko) | 프로세서로 산출하기 위한 시스템 | |
US9720704B2 (en) | Data driven hardware chips initialization via hardware procedure framework | |
CN102207896A (zh) | 虚拟机崩溃文件生成技术 | |
Pellegrini et al. | Autonomic state management for optimistic simulation platforms | |
EP1842130A2 (en) | Method for managing access to shared resources in a multi-processor environment | |
US20110219373A1 (en) | Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform | |
EP1915681A1 (en) | Method and apparatus for supporting universal serial bus devices in a virtualized environment | |
JP2004503866A (ja) | モジュラーコンピュータシステムおよび関連方法 | |
US20120036338A1 (en) | Facilitating processing in a computing environment using an extended drain instruction | |
US8429218B2 (en) | Process restart on a compute node | |
WO2023287563A1 (en) | Apparatus, articles of manufacture, and methods for managing processing units | |
US20220350596A1 (en) | Computing node allocation based on build process specifications in continuous integration environments | |
Kunzman | CHARM++ on the Cell Processor | |
US20240134707A1 (en) | Apparatus, articles of manufacture, and methods for managing processing units |
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: 20101110 Termination date: 20110803 |