计算机系统的细粒性能资源管理的制作方法

文档序号:6360539阅读:131来源:国知局
专利名称:计算机系统的细粒性能资源管理的制作方法
技术领域
本发明所描述的主题涉及用于管理由处理器系统执行的任务所利用的性能资源的系统、方法和产品。
背景技术
计算系统不仅包括物理资源(处理器、内存、外围设备、总线等等),而且也包括性能资源,比如处理器周期、时钟速度、内存和I/o带宽以及主/缓存内存空间。在传统方法中,基本上是效率低下地管理或完全不管理性能资源。结果是未充分利用处理器,处理器消耗了太多的能量并且使其损失了一些潜在的性能。很多计算机系统能够动态地控制系统和/或处理器的时钟频率。降低时钟频率可以动态地降低由半导体尺度效应(scaling effects)引起的功耗,因此当降低时钟频率时允许降低处理器的电源电压。因此,由于能够降低时钟频率,将计算机系统设置为根据需要运行,因此可以使能量功耗、发热量等降低。类似地,与相关接口和/或外围设备相同,很多处理器能够快速地进入和退出空闲或睡眠状态,与活动状态相比,空闲或睡眠状态可以消耗非常少量的能量。与通过降低时钟频率,将一个或多个处理器和/或部分或全部计算机系统设置在睡眠状态一样,将计算机系统设置为根据需要运行,可以用于降低整体的能量消耗。在实践中,当一个或多个处理器可以被空闲或运行在降低的时钟速度时,传统的功率管理方法通过慢的系统响应检测空闲时间或“应用模式”,并因此节省能量。一直以来,基于“应用模式”的功率管理对始终有效地利用所有能耗降低的机会经常具有过于粗略的粒度。

发明内容
通过处理器系统监测多个任务的执行。基于该监测,通过对每个任务计算进度误差和/或者一个或多个进度限制误差,标识需要额外性能资源的任务。此后,调整分配给每个已标识任务的处理器系统的性能资源。该调整可以包括调整执行任务的处理器系统中至少一个处理器的时钟速率,调整将由任务利用的缓存和/或缓冲区的数量,调整将由任务利用的输入/输出(I/o)带宽的数量。可以从组中选择的每个任务包括单个任务、一组任务、线程、一组线程、单个状态机、一组状态机、单个虚拟机和一组虚拟机,以及上述情况的任何组合。处理器可以包括单个处理器、多处理器、支持多线程的处理器系统(例如,同步或伪同步多线程等),和/或多核处理器。可以改变与正在执行/待执行的任务相关的已监测的性能指标。例如,可以首先监测数据传输,而可以随后监测处理器周期。进度误差速率可以等于由任务已完成工作和由任务待完成工作之间的差。或者,进度误差速率等于对于已完成工作的工作完成速率和对于任务的预期工作速率之间的差。每个任务可以具有相关的执行优先级和执行最后期限(并且可以通过调度器指定该优先级和/或最后期限,和/或可以作为速率适应函数的一部分或速率适应函数的参数得到/应用该优先级和/或最后期限)。在该情况下,可以调整处理器系统的性能资源以使每个已标识的任务在其相应的执行最后期限之前并且根据其相应的执行优先级被完成。可以在逐个任务的基础上调整性能资源。每个任务可以具有相关的性能配置文件,该性能配置文件用于建立执行优先级和任务的执行最后期限。相关的性能配置文件可·以指定至少一个性能参数。例如,性能参数可以是,指定将由任务使用的缓冲区的初始最大和/或最小量的缓存占用配额,并且在任务的执行期间,可以动态地调整缓存占用配额。可以基于下述的至少一个来动态地调整缓存占用配额进度误差、任务的缓存失效率、缓存命中速率或表示性能的任何其它指标。性能参数可以指定对于任务执行的初始带宽要求,可以将该带宽要求在任务执行期间动态地调整。可以确定每个任务所需的处理器时钟需求速率。基于该确定可以基于对所有任务的已确定处理器时钟需求速率计算合计时钟需求速率。作为回应,可以调整处理器系统时钟速率以适应合计时钟需求速率。在一些情况下,可以将处理器系统时钟速率调整为合计时钟需求速率加上开销需求速率。可以依照当前处理器系统时钟速率与对于任务完成的预期执行时间的积,除以时间间隔来计算处理器时钟需求速率。可以基于影响任务性能的误差更新每个任务的处理器时钟需求速率,并且其结果是,可以基于每个任务的已更新处理器时钟需求速率来更新合计时钟需求速率。每个任务的处理器时钟需求速率或合计时钟需求速率的更新可以应用至少一个适应函数以抑制或增强快速的速率改变。当任务由调度器或其它系统组件确定为随时可运行时,可以将每个任务的处理器时钟速率添加到合计时钟需求速率中,所述其它系统组件确定何时任务为随时可运行(比如,任务被堵塞于其上的用于完成I/o请求的I/O子系统)。可以在一段时间内计算合计时钟需求速率,从而在有时处理器系统时钟速率高于合计需求速率,在其它时间处理器系统时钟频率低于合计时钟需求速率。处理器系统可以包括至少两个处理器,并且可以为至少两个处理器中每个确定合计时钟需求速率,并且合计时钟需求速率可以基于使用相应的处理器执行任务的处理器需求速率。在该布置中,可以分别和相应地调整至少两个处理器中每个的时钟速率。每个任务分配有物理内存。至少一个任务可以利用映射到物理内存的至少一部分的至少一个虚拟内存空间。在另一个方面中,监测通过处理器系统的多个任务的执行,以对于每个任务确定至少一个监测值。所述至少一个监测值表征影响通过处理器系统的相应任务的性能的至少一个因素。每个任务具有指定至少一个性能参数的相关的任务性能配置文件,对于每个任务,将相应的监测值与指定于相关任务性能配置文件中的相应的至少一个性能参数相比较。基于该比较,对于基于该比较的每个任务,可以确定用于执行任务的性能资源是否应该加以调整,或者用于执行任务的性能资源是否应该得以保持。此后,当确定应该调整分配到该任务的性能资源时,通过修改每个任务的处理器时钟速率来调整性能资源,并且当确定应该保持分配到该任务的性能资源时,保持每个任务的性能资源。监测值可以表征由任务完成的工作量。任务完成的工作量可以来自于下述中的至少一个执行任务时传输的数据量、执行任务时完成的处理器指令数、处理器周期、执行时间等等。在一些变型中,对于每个任务确定当前程序状态,并且相关的任务性能配置文件指定具有不同的性能参数的两个或多个程序状态。通过该布置,可以将监测值与当前程序状态的性能参数相比较(并且可以改变监测的内容(例如,指令数据传输等等))。可以修改执行中的任务的至少一个性能配置文件,以便改变相应的性能参数。因 此,可以将监测值与已改变的性能参数相比较。可以确定每个任务所需的处理器时钟需求速率。此后,可以基于对所有任务的处理器时钟需求速率计算合计时钟需求速率。因此,可以调整处理器系统时钟速率以适应合计时钟需求速率。可以基于预期的或完成的工作速率和至少一个进度限制速率(例如,进度限制误差等)之间的差,动态地调整特定任务所需的处理器时钟需求速率。每个任务所需的处理器时钟需求速率可以基于完成相应任务的预期时间。处理器系统时钟速率可以选择性地减少到不影响任务完成的预期时间的级别。可以将处理器系统时钟速率设置到睡眠状态或空闲状态,直到合计时钟需求大于零的时间。处理器系统时钟速率可以在一段时间内波动高于和低于合计时钟需求速率,只要平均的处理器系统时钟速率在一段时间内高于合计时钟需求速率。性能配置文件可以指定限制任务可以利用的缓冲区数的占用配额。可以基于预期的和已完成的工作速率与一个或多个进度限制速率(例如,进度限制误差等)之间的差,动态地调整占用配额。从单个来源或多个来源的其他性能指标可以用于调整占用配额。可以选择性地控制通过处理器系统的输入/输出子系统利用的带宽,以便每个任务的性能需求得到满足。可以基于预期的和已完成的工作速率与一个或多个进度限制速率(例如,进度限制误差等)之间的差,动态地调整利用的带宽量。从单个来源或多个来源的其他性能指标(例如,进度限制误差等)可以用于调整占用配额。在另一方面中,系统包括至少一个处理器、多个缓冲区、调度器模块、计量模块、自适应时钟管理器模块、缓存占用管理器模块以及输入/输出带宽管理器模块。调度器模块可以调度通过至少一个处理器待执行的多个任务(并且在一些实现方案中,每个任务具有相关的执行优先级和/或执行最后期限)。计量模块可以监测多个任务的执行,并且标识需求额外处理资源的任务。当执行任务时,自适应时钟管理器模块可以选择性地调整至少一个处理器的时钟速率。缓存占用管理器模块可以选择性地调整将被任务利用的缓冲区的最大数量。输入/输出带宽管理器模块可以选择性地调整将被任务利用的输入/输出(I/o)带宽的最大数量。还描述了生产的产品,该产品包括永久存储在计算机可读媒体上的计算机可执行指令,当由计算机执行该指令时,使得计算机对该指令进行操作。类似地,还描述了计算机系统,该系统可以包括处理器和联接到处理器的内存。内存可以暂时或永久存储一个或多个程序,该程序使得处理器执行本发明所述的一个或多个操作。本发明所述的主题提供了许多优点。例如,通过优化缓存/缓冲区的利用和I/O带宽(基于性能需求),以此方式在使用最少的资源的同时提供性能保证/目标同时,可以允许计算机系统具有较大的容量(由于每个组件的所需资源是最小化的)。此外,当前的主题可以允许计算机系统需要较少的/较小的物理计算机资源,从而降低成本和/或减少物理尺寸。此外,由于需要消耗资源的更小功率,可以降低总功率消耗。此外,通过多处理器,t匕如合计时钟频率、进度误差和进度限制误差的信息可以用于通知调度器,处理器在该调度器上调度任务。在如下附图和说明书中描述了本发明所述的主题的一个或更多变型的细节。通过说明书和附图,以及通过权利要求,本发明所述的主题的其它特征和优点将得以阐明。


·
图I是具有性能资源管理的计算机系统的方框图;图2是计量模块的方框图;图3是性能资源管理器模块的方框图;图4是说明日历队列的图;以及图5是说明处理器系统性能资源管理的技术的流程图。在各附图中相似的参考标记指示相似的元件。
具体实施例方式图I是计算机系统的简化方框图,该计算机系统包括处理器系统10、管理模块106、I/O (输入/输出)子系统108以及系统内存150。为了帮助当前的主题的理解,在图中没有显示处理器系统和计算机系统的一些众所周知的元件。处理器系统10可以包括一个或更多中央处理单元、处理器、微处理器、处理器核等等。例如,处理器系统10可以包括多个处理器和/或多核处理器。如图I所示的处理器系统的功能元件可以由硬件实现或由硬件和软件(或固件)的组合实现。处理器系统10可以包括指令缓存(instruction cache)104、指令提取/分支单元(Instruction fetch/branch unit) 115、指令译码(instruction decode)模块 125、执行单元135、加载/存储单元140、数据缓存145、控制处理器系统的时钟速度的时钟模块180、控制处理器系统空闲或睡眠状态的空闲状态模块184、DMA (DirectMemory Access (直接存储器存取))模块186、性能管理系统105以及调度器模块130。性能管理系统105可以包括计量模块110和性能资源管理模块120。在一个实现方式中,可以将为任务储存任务性能配置文件的任务情境内存并入系统内存150中。在另一个实现方式中,任务情境内存可以独立于系统内存150。贯穿本文,可以将任务称为通过处理器系统10执行的指令集。尽管有时将该术语任务单独地引用,但仍然可以将该术语任务解释为包括一组任务(除非另外规定)。任务也可以包括进程(比如正在执行的计算机程序),执行线程(比如一个或更多个同时或伪同时执行的紧密共享资源的计算机程序的实例)等等,任务可执行在一个或多个处理器系统10(例如,微处理器)或虚拟机(比如在一个或多个处理器上的虚拟执行环境)中。虚拟机(VM)是机器(计算机)的软件实现方式,虚拟机像真正的机器那样执行程序。在一些实现方式中,任务可以是状态机,比如图像处理器,密码处理器等。管理模块106可以是连接到处理模块的计算机系统的一部分(例如,驻留在系统内存150中的程序)。管理模块106可以从系统存储器150或从存储设备(比如硬盘驱动器、非易失性内存等)中创建和/或检索先前创建的性能配置文件,并且分配任务的性能配置文件,该性能配置文件将任务的性能参数直接地或通过该任务的任务环境(包含管理特定任务所需的信息的数据集)指定到任务。在一些实现方式中,管理模块106可以通过决定/控制任务性能配置文件(例如,通过策略/规则集等)来控制资源分配。I/O子系统模块108可以是连接到处理模块的计算机系统的一部分(例如,驻留在 系统内存150中的程序)。I/O子系统模块108可以控制、和/或使能、和/或提供对于处理系统与可能是人员、存储设备或另一个处理系统的外部世界之间的通信的装置。输入为由系统接收的信号或数据,输出为系统发送的信号或数据。存储设备可用于存储信息以便以后检索;存储设备的例子包括硬盘驱动器和非易失性半导体存储器。计算机系统之间的通信设备(比如调制解调器和网卡)通常既被用作输入又被用作输出。处理器系统10的性能管理系统105可以控制对单个任务和对于处理器系统的处理器性能资源的分配。在一些实现方式中,性能管理系统105可以控制执行在状态机中的单个任务的状态机性能资源的分配。在另一些实现方式中,管理模块106可以通过决定/控制任务性能配置文件(例如,通过策略/规则集等)来控制资源分配。例如,通过控制对所有任务的性能资源的分配,每个任务可以具有吞吐量和响应时间保证。此外,通过对所有任务分配最低的性能资源,利用了处理器系统10和/或合并了处理器系统10的性能资源的计算系统(包括I/O子系统模块108和系统内存150,等等)的最少量的处理器资源。在一个实例中,性能资源的最小化提高了效率,降低了能量消耗并且要求更少的/更小的物理计算机资源,从而降低成本。在另一个实例中,分配到每个任务的性能资源的最小化可以使处理器系统10能够具有更大的容量,使更多的任务能在该系统上运行,同时同样地将吞吐量和响应时间保证提供给更大数量的任务。任务可以是指定任务性能参数的分配的性能配置文件。如本文档中在其它地方所述,任务性能参数的实例包括待完成的工作量We、时间间隔Ti、和待完成的最大工作量Wm、缓存占用以及I/O (输入/输出)带宽需求。时间间隔可以表示最后期限,因此该任务被期望在Ti时间之内完成We工作量。当执行预定的任务时,待完成的工作量可以确定将由该任务进行的预期工作量。待完成的最大工作量可以指定该任务可以累积的最大工作量,例如,是否推迟任务预期工作量的完成。与其它性能参数一样,也可以通过调度模块130利用时间间隔来影响调度决策,比如应用时间间隔来影响何时任务应该运行或作为最后期限(准许任务完成其预期工作量的最大时间)。工作速率Wr可以通过关系Wr=We/Ti来表示。在一个实现方式中,这些参数可以动态地改变任务状态,使得性能配置文件参数为多个参数集,其中每个集可以与一个或多个程序状态相关联,并在任务的执行过程中动态地加以改变。调度模块(以及可以用于与当前主题有联系的相关方面)的一个实例在美国专利申请公开No. 2009/0055829A1中得以描述,其内容通过引用而完全包含于本文中。
可以将多个性能配置文件分配给任务组,与将性能配置文件分配给单个任务相似。在一个实现方式中,作为组成员的任务共享共同的性能配置文件,并且性能资源参数可以源于该共同的配置文件。在一些变型中,性能参数的子集可以是性能配置文件组的一部分,而其它部分为单个任务性能配置文件。例如,任务配置文件可以包括预期的工作参数,而任务是共享I/o带宽以及缓存占用性能参数的组的成员。任务为一个或多个组的成员时,多个组可以存在,所述组同时指定共同和单独的性能配置文件参数,其中由性能资源管理器利用的参数来源于各个性能配置文件(通过策略/规则集)。工作可以是数据传输的测量、完成的处理器指令、或通过处理器系统10或者状态机(比如图像处理器,密码处理器等等)完成的其它有意义的单位的测量工作。由于可以将该工作测量到精细粒度,同样可以将性能资源管理到精细粒度。处理器系统10可以执行存储在系统内存150中的指令,其中许多指令操作存储在 系统内存150中的数据。贯芽本文中,可以将指令称为指令集或程序指令。可以将系统内存150物理地分布在计算机系统中。指令缓存104可以临时储存来自系统内存150的指令。指令缓存104可以充当系统内存150和处理器系统10之间的缓冲存储器。当要执行指令时,通常从系统内存150中检索指令,并且将指令复制到指令缓存104中。如果相同的指令或指令组经常用于程序指令集中,由于消除了系统内存的访问,指令缓存104中这些指令的存储可以获得吞吐量上的改进。提取/分支单元115可以联接到指令缓存104,并且配置成从系统内存150中检索指令,以便指令存储在指令缓存104中。指令译码模块125可以解释和执行检索到的指令。在一个实现方式中,译码模块125可以将指令分解成对处理器系统10的其他部分具有意义的几个部分。执行单元135可以将已译码的指令作为控制信号序列传递,例如,传递到处理器系统10的相关功能单元以进行指令所需的操作。执行单元可以包括寄存器文件和算术逻辑单元(ALU)。指令所需的操作可以包括从寄存器读取值、传递该值到ALU (未示出)以将其合并在一起,并将结果写入寄存器。执行单元135可以包括加载/存储单元140,该加载/存储单元140配置为进行数据缓存145的访问。在其它实现方式中,加载/存储单元140可以独立于执行单元135。数据缓存145可以是高速存储装置(例如随机访问存储器),其中包含数据项,例如从系统内存150最近已经访问的数据项。在一个实现方式中,数据缓存145可以由指令缓存104独立访问。图2是计量模块110的方框图。为了解释的目的,将参考图I来论述图2。计量模块110可以测量已进行的工作或由当前执行的任务已完成的工作量。在一个实现方式中,计量模块110可以监测任务的执行以便确定与该任务已完成的工作量相关的监测值。与已完成的工作量相关的监测值可以是实际的已完成的工作量、计数器值,或者与已完成的工作量成正比或与已完成的工作量相关的类似的值。一般来说,计量模块110的一个实现方式可以包括已完成工作模块210(Wc)、待完成工作模块220 (We)、比较器模块230,以及加法器模块240。已完成工作模块210可以是已完成工作的计数器,而待完成工作模块220也可以是待完成工作的计数器。可以基于针对所过时间的工作速率来更新待完成工作的计数器。可以通过性能资源管理器对待完成的工作进行计算,例如,当通过用于向性能资源管理器通知任务选择的调度模块130将任务选择为在处理器系统中执行时。计量模块110可以测量和监测由当前正执行在处理器系统10上的任务完成的工作。可以在处理器系统10上实现一个或多个任务(例如,处理器使用同步或伪同步多线程、多处理器等等)。在一个实现方式中,可以通过已完成的指令量测量已完成工作的监测值或关于已完成工作量的信息,并且可以从指令提取/分支单元115获得(如图I中的箭头170所示)已完成工作的监测值或关于已完成工作量的信息。也可以由通过内存操作传输的数据量来测量监测值,并且可以从加载/存储单元140获得(如图I中的箭头165所示)监测值。当用于监测内存操作(带宽)时,可以将计量模块110配置成只针对到/从特定的地址(比如视频帧缓冲区)的内存操作。可以将该配置在逐个任务的基础上(通过任务环境或任务性能配置文件的配置信息部分)变化。在一些实现方式中,取决于计算机系统实现的特定细节,可以存在单独的针对指令完成和内存操作的计量模块110。这些计量模块将会类似于单个计量模块110。如同一些处理模块10同时处理多个任务(线程),已完成的指令信息可以包括关于哪个线程完成了某些指令的信息(通常通过用线程或进程或任务的标识符来标记信息)。内存操作信息可以同样包括该线程标识符,以便计量模块110将这些操作关联到正确的任务。包括一个或多个中央处理单元、处理器、微处理器、处理器核心等的处理模块 10可以包括针对每个这样的处理器的多个计量模块110。与已进行的工作或已完成的工作Wc相关的监测值可以通过计算对内存的访问、已完成的指令,和/或其它可测量的量进行测量,所述其它可测量的量是对当前任务执行的工作有意义的测量值。监测值(例如可以包括访问的大小的内存的访问数目)可以在加法器模块240接收,在加法器模块240处该监测值被计算总数并且提供给已完成工作模块210。监测值也可以通过内存操作加以测量,并且可以从加载/存储单元140获得(如图I中的箭头165所不)。待完成工作模块220可以接收与待完成的工作量相关的参数值We。与待完成工作量和/或工作速率相关的参数值可以是存储在任务的任务性能配置文件中的预定值。待完成工作的参数值可以是实际待完成的工作量、计数器值或者与待完成工作量成比例或与待完成工作量相关的类似的值。该参数值可以是常数参数或由工作速率计算出的参数值,例如该参数值包括可以被计算的工作信度(work credit),通过将工作速率乘以过去的时间来计算待执行任务的等待时间。也可以连续或周期性地计算工作信度,使得即使在任务运行中,待做工作也按照工作速率随着时间推移而增加。该经计算的待做工作可以被限制为不大于最大工作参数。在一个实现方式中,可以在映射任务到计算机系统的过程中通过管理模块106预定该参数值。可以通过比较器模块230将已完成工作与待完成工作相比较。该比较的结果,进度误差,可以是表示已完成工作与待完成工作之间的差别的值,和/或通过在比较中包括时间,在已完成工作速率与待完成工作速率(预期的工作速率)之间的差别的值。一个实现方式可以在预期运行时间之内,基于实现该任务预期的待完成工作的任务来计算进度误差。例如,可以通过如下关系计算所述误差进度误差=(qt/Qi) Xffe-Wc ;其中qt从任务开始执行以后的运行时间,而Qi是完成待完成工作的预期时间;该预期时间可以取决于处理器和/或计算机系统状态,比如处理器系统的时钟频率。在上面的示例性关系中,负的进度误差可以表示在运行时间qt中的工作完成大于预期工作。如本文档中在其它地方所详述,进度误差可以用于分配或调整任务相关资源的性能分配。
可以利用一个或多个实例的计量模块,通过计量模块可以测量的量,例如内存访问或缓存失效事件(即,试图读或写缓冲区中的数据块失败导致的主要内存访问,等等),通过计量这些量并且将其与预计算参数的相比较来确定任务进度是否受限制(直接或间接)。在一个实现方式中,可以通过为作为一种计量模块实例的We模块220提供要与在Wc模块210中累积计量的量相比较的值,来实现进度限制的测量。可以将提供给模块220的值认为是进度限制参数。然后比较器函数可以比较两个值(包括关于时间的比较)以确定进度是否受该测量的量的限制;例如,受某缓存失效率或内存访问速率限制。结果可以表示为进度误差(注意到,该结果与由已完成工作和待完成工作相比较引起的主要进度误差不同)。如本文档中在其它地方所详述,进度限制误差值可以用于分配或调整任务相关资源的性能分配。进度限制参数可以是任务性能配置文件的一部分。如本文档中在其它地方所详述,在处理器系统上执行的当前和先前的几次任务的进度误差和进度限制误差值的历史记录,可以用于分配或调整任务相关资源的性能分配。
例如,可以将这些值表示为作为累积的进度和进度限制误差值或作为一系列的当前和历史记录的值(该值可以是任务性能配置文件的一部分)。自适应时钟管理器模块320可以通过经由时钟控制模块180确定所需的时钟速度并设置处理器系统10的时钟频率来管理处理器系统的时钟速度。可以通过计算在计算机系统中的任务的合计时钟需求速率(aggregate clock demand rate)来确定处理器系统的时钟速度。表示在考虑之中的所有任务的累积需求速率的合计时钟需求速率Ard可以等同于SUMi=Tasks{Trd[i]}+Ro,其中Trd[i]为任务i的任务需求速率,而Ro为处理器/系统的不计入单个任务需求速率的开销需求速率。任务需求速率可以表不任务i在时间间隔或最后期限Ti之内完成其预期工作We的时钟速率需求。在一个实现方式中,合计需求速率可以包括随时可运行任务的需求速率,而在其它实现中,需求速率可以包括非随时可运行任务的估计需求速率,该估计需求速率计算和/或推测何时所述任务将会随时可运行。开销需求速率可以是常数参数或者也可以取决于系统状态,以便根据系统状态选择开销需求速率的一个或多个值。对于一些实现方式,开销需求速率可以包含在任务需求速率(该任务需求速率随后可以结合代表任务的处理器系统开销活动)中。在一个实现方式中,开销需求速率可以在映射任务到计算机系统的过程中通过管理模块106预先决定。如果在任务i运行过程中处理器系统的时钟频率F是不变的,可以通过频率和预期执行时间的乘积除以时间间隔来计算任务需求速率;Trd[i] = (FXQi)/Ti,其中F为在任务预期执行时间Qi内的实际时钟频率,而Ti为时间间隔或最后期限。预期执行时间为任务完成其预期工作的预期时间,并且预期执行时间可以是任务性能配置文件的一部分。一般来说,预期执行时间可以源于先前执行的任务(在处理器系统上运行)并且可以是任务的预期的待完成工作的累计时间的测量。此外,预期执行时间通常取决于处理器系统的频率。任务的需求速率可以是,在任务的时间间隔或最后期限Ti内,该任务完成其预期工作的最小时钟频率。在另一个实现方式中,在任务执行过程中,处理器系统的频率改变(例如,由于合计时钟需求速率改变),可以将任务需求速率计算为SUMpraiueneyaanges { (F[j] XQi[j] ) /Ti},其中将预期执行时间分为几段,每个频率(变化)子间隔为一段。任务需求速率可以是任务性能配置文件的一部分。在一个实现方式中,时钟管理器模块320可以请求处理器在与合计需求速率Ard相关的时钟频率下运行,当Ard的值根据本文档中其它地方所述的某些依赖关系改变时,做出该请求。实际的系统可能只能支持一组离散处理器和系统时钟频率,在该情况下,系统设置为受支持的频率以便处理器系统频率高于或等于合计需求速率。在一些处理器系统中,可能需要多个时钟周期来改变时钟频率,在该情况下,可以调整请求的时钟速率以计入时钟翻转时间。在每个任务的执行过程中,可以监测进度误差和/或进度限制误差,并且基于这些值的一个或多个来更新任务需求速率,例如以周期性的间隔。如在本文档中其它地方所述,在一个实现方式中,已更新的任务需求速率导致新的合计需求速率,该合计需求速率可以导致处理器系统的时钟的改变。可以使用进度误差和进度限制误差直接调整需求速率,或通过由自适应时钟管理器模块320执行的一个或多个速率适应函数调整需求速率。例如,如果误差大于某些限制, 一个速率适应函数可以调整任务需求速率,而如果误差持续超过某段时间,另一个适应函数可以改变需求速率。可以将速率适应函数用于抑制任务和/或合计需求速率的快速改变,这些合计需求速率的快速改变可能是不合预期的,特别是处理器系统和/或由某些任务引起的合计需求速率,并且该合计需求速率可以是系统依赖和/或任务依赖。速率适应函数可以是任务性能配置文件的一部分。自适应时钟管理器模块320可以通过调整单个任务的需求速率调整合计需求速率以便在任务的预期时间中计入满足其预期工作的任务。在另一个变型中,可以将处理器时钟频率调整为与合计需求速率相关,同时通过由进度误差和进度限制误差值引起的两个调整数分别调整单个任务需求速率。因此,可以调整处理器的时钟频率、合计需求速率、以及单个任务需求速率以将所有任务(正在考虑的)的预期完成的工作的总和匹配到他们以闭环形式待完成的工作。需求速率调整可以准许开销需求速率包含于单个任务需求速率中,因此是任选的参数。最小和最大阈值参数可以与任务需求速率相关。该最小和最大阈值参数可以涉及进度误差和进度限制误差,并且可以用于限制最小和/或最大任务需求速率。在另一个实现方式,阈值可以限制在任务执行过程中选择的最小和最大处理器时钟频率。最小和最大阈值参数可以是任务性能配置文件的一部分。自适应时钟管理器模块320可以检测何时调整提高处理器时钟频率而不提高已完成工作速率,并且可以调整降低请求的时钟频率而不有害地降低已完成工作速率。例如,通过观察在进度误差随着处理器频率改变中的改变,或其不足,可以检测到该条件。当任务的状态改变时,时钟管理器模块320可以调整提高请求的时钟频率,以便加大提高时钟频率而提高已完成工作速率。可以通过设置处理器的时钟频率来实现该检测,以便进度误差满足某一阈值的标准,而当误差低于某一阈值时,可以随着通过进度误差的减少表示的更大的进度来调整提高时钟频率。可包括进度误差和/或进度限制误差的某一速率适应函数可以被用于计算处理器的时钟频率。该速率适应函数可以是系统和/或任务依赖的,并且可以是任务性能配置文件的一部分。任务需求速率、速率适应参数、进度限制参数、和/或阈值等,可以动态地改变任务状态,以便性能配置文件的参数为多个参数集,其中每个集可以与一个或多个程序状态相关,并且通过管理模块106在任务执行过程中动态加以改变。此外或可替代地,该任务需求速率、速率适应参数、进度限制参数、和/或阈值等,可以直接通过任务(而不是管理模块106)加以调整。当任务成为随时可运行时,可以将任务的需求速率添加到合计需求速率中,任务成为随时可运行可以是由调度模块130 (例如,基于调度或其它事件,比如I/O操作变得阻塞等等)或其它子系统比如I/O子系统确定的。该需求速率最初可以由任务性能配置文件指定或通过任务性能配置文件计算,并且,例如,该需求速率可以基于任务的工作完成进度超时来更新,通过速率适应函数作为进度误差的函数来更新,等等。性能配置文件可以包括一个或多个任务状态依赖的性能参数。在该情况下,当这些参数由于任务状态或系统状态的变化而变化时,可以将任务需求速率更新,并且任务需求速率可以在任务执行在处理器系统的过程中,通过速率误差适应(在性能配置文件参数的计算中应用进度误差和/或进度限制误差)来进一步更新。在任务变得不可运行(例如,基于调度或其它事件,比如I/O操作变得阻塞,等等)的情况下,可以通过单个任务需求速率重新计算合计需求速率。在另一个实现方式中,与计算每个单独任务的需求速率相比可以具有降低的开销要求,可以通过在时间间隔或当前执行结束时(当预期工作已完成时),通过将累计需求速率置于基于时间的排队系统(比如日历队列)中,取时间间隔或当前执行结束较后的一个,减去任务的累计需求速率计算新的合计需求速率,所述排队系统显示在将来的特定时间的确定信息。该实现方式保留了在合计需求速率从第一次添加任务速率的时间到任务速率时间间隔或任务速率完成执行结束的时间(取其较后的一个)期间的任务的需求速率。 自适应时钟管理器模块320可以利用日历队列,例如,日历队列条目I (可以利用其它日历队列技术)。自适应时钟管理器模块320可以在将来将任务的累积时钟需求速率插入到位置Ti-Rt (从时间间隔到当前的实际时间Rt的差)单元中(例如,在日历队列条目N-I下的任务)。由于日历队列是有限大小的,指针可以计算为MAX (Ti-Rt,MAX CALENDARSIZE-1),其中MAX CALENDAR SIZE (N)是日历队列的离散时间条目的数量。当前实际时间Rt递进到非空的日历位置时,时钟管理器模块320可以从合计需求速率减去Ti=Rt位置的每个任务的累积时钟需求速率。Ti=Rt的该情况在图4所示的日历队列条目O处出现。指针可以表示从当前时间或实际时间到将来的时间相关值。在某一阈值之内,可以将具有Ti>Rt的任务插入到日历队列中。阈值和日历的大小可以取决于系统设计、实际时间时钟的精度和所需的时间粒度。日历队列可以是循环队列以便随实际时间递进,前面的当前时间条目成为日历队列中最后的条目。在图4的实例400中,当实际时间递进到条目1,条目O成为最后的队列条目。指针可以考虑到日历是循环队列的事实。当前时间指针可以从O到N-I递进作为实际时间的递进。因此,在点N-I处当前时间指针绕回到零。自适应时钟管理器模块320可以额外管理进入到处理器系统的空闲状态中和从处理器系统的空闲状态中恢复。如果合计时钟需求为零时,时钟管理器模块320可以将处理器系统置于空闲状态,直到合计时钟速率是/将大于零的时间。在一些处理器系统中,可以请求多个时钟周期进入空闲状态和从空闲状态恢复,在该情况下,可以调整进入和恢复空闲状态的时间以及在恢复活动状态时请求的时钟速率,以计入空闲输入和恢复时间(以及时钟翻转时间)。时钟管理器模块320也可以通过请求大于或等于合计需求速率的频率并且将处理器系统置于空闲状态中,以便平均频率(考虑到空闲时间具有零频率)等于或高于合计需求速率,能够在一段时间内实现某些合计需求速率。在实现方式中,其中处理器系统10具有执行于更高频率的更大的能量效率,然后将处理器系统10置于空闲状态以满足某些合计需求速率。在一些实现方式中,可以使请求的速率适应高于已计算的合计需求速率,以便使处理系统偏置置于空闲状态中。频率和空闲状态选择通过参数进行,参数可以来自于在映射任务到计算机系统的过程中通过管理模块106表征的处理器系统。自适应时钟管理模块可以通过发信号到空闲状态模块184来请求处理器系统进入空闲状态,以使处理器系统空闲。当事件(比如,来自I/o设备或计时器的中断,等等)发生时,可以退出空闲状态。在多处理器系统中,可以分别为每个处理器,或共同为所有处理器,或处理器的子集,或这些的组合,计算合计需求速率。可以将一些任务分配给特定的处理器,而其它任务可以自由运行在任何的或特定的处理器集上。可以为遵守必须在特定处理器上运行的每个 任务的限制度和自由度的所有处理器计算合计需求速率,所述特定处理器包括预期在具体的处理器上运行任务的关联属性。在多处理器系统的一个实现方式中,可以分别控制每个处理器的时钟速率和空闲状态。在该情况下,时钟管理器模块320可以选择时钟速率的组合,而使一个或多个处理器空闲以实现最低能量。如果不能分别调整时钟速率,则空闲状态可能是单一的时钟速率,可使用该单一的时钟速率使一个或多个处理器空闲以实现最低能量消耗。在多处理器系统的另一个实现方式中,可以选择时钟频率,以便为所有的处理器或为处理器的多个子集的合计需求速率,在实现确定的期望目标的处理器之间分配,比如最大化吞吐量或最小化任务的任务完成时间,分别地或通过多个任务的并行计算进行。与调度器模块130的交互(在哪个任务在哪个处理器中执行确定的情况下)对于实现预期的目标应该是必要的。时钟模块180和空闲状态模块184可以与其它计算机系统组件有交互(图中未示出)。该交互对能够改变一个或多个处理器的时钟速度或空闲状态应该是必要的。例如,改变处理器频率可以需要改变总线的时钟速度、外围设备的时钟速度、系统内存150的时钟速度,等等。同样,为将处理器置于空闲状态或从空闲状态恢复,某些总线、外围设备、系统内存150等需要在进入该空闲状态之前(比如停止I/O设备和将其缓冲区写入系统内存)或恢复活动状态之前(比如初始化I/O设备以开始操作)准备。缓存占用管理模块340可以管理缓冲区或缓存占用配额的使用。该占用配额可以是任务可以(或应该)使用的缓冲区数量的数值限制。占用配额Oq和当前占用Oc可以额外存储于任务的性能配置文件中。可以使用例如缓存替换算法选择性地分配缓存占用,比如 2011 年 3 月 25 日提交的题为 “Control of Processor CacheMemory Occupancy” 的共同未决美国专利申请公开No. 13/072, 529和美国专利申请公开No. 61,341,069的优先权中所述,通过引用将两个申请的内容纳入本文。在该情况下,可以将占用表征为由任务使用的缓冲区的实际数量的指示。缓冲区是在数据被从一个地方移到另一个地方,或者允许更快的访问(比如处理器指令/数据缓存)期间,用于临时保存数据的内存或内存区域(比如输入/输出缓冲区缓存)。随着将缓冲区(或缓存块/行)分配到任务,占用计数器(Oc)可以递增,随着将缓冲区去除分配到任务,占用计数器可以递减。无论何时占用配额大于占用计数器(Oc>Oq),任务超过其占用配额。超过占用配额可以致使任务的缓冲区被优先替换(缓存块/行替换)或防止新缓冲区的分配,直到实体依从其配额(Oc=〈Oq)。占用配额可以包括多个配额参数,以便给出更高或更低的优先级以比较对于该额外配额的占用。任务的占用配额可以是其性能配置文件的一部分。该性能配置文件参数可以静态设置,可以取决于程序状态,或者通过缓存占用管理器动态计算。如本文档中其它地方所述,可以基于任务的性能调整动态占用配额,例如,满足其最后期限,基于在其执行或从应用进度误差和/或进度限制误差,依照将预期工作与已完成工作相比的执行的反馈期间的缓存失效息。缓存占用管理器可以调整占用配额。例如,该调整可以基于预定义的/配置的限制,该限制可以依次为系统级配置限制和包括于任务的性能配置文件中的限制的组合。在
一个实现方式中,可以基于任务的预期工作速率和工作完成速率之间的差调整占用配额,比如利用进度误差,或缓存失效率,或进度误差和缓存失效率的组合。在该变型中,可以做出占用配额的计算,以便当任务低于其预期工作速率,或缓存失效率高于某个阈值时,可以增加占用配额;反之,当任务超过其预期工作速率,或缓存失效率低于某个阈值时,可以减少占用配额。该计算也可以考虑到进度限制误差值,例如,通过检测以通过不同于占用的另一个因素限制进度。缓存占用管理模块可以通过设置在指令缓存104和/或数据缓存145中(如果指令缓存104和/或数据缓存145具有占用配额控制机构)或其他缓冲区/缓存组件的配额来控制占用配额,该缓冲区/缓存组件可以是处理系统或计算机系统的一部分,或联接到处理系统或计算机系统,比如存储在系统内存150中的程序。缓存占用参数可以与任务(或任务组)相关,以便系统将占用配额分配到任务或代表任务;假定如果通过缓存占用管理模块和各自的I/O子系统两者利用来跟踪任务。可以在硬件,或软件(固件),或硬件和软件(固件)的组合中实现配额控制机构。缓存占用可以包括映射虚拟内存到物理内存,内存管理技术允许任务利用可独立于物理地址空间的虚拟内存地址空间。物理内存实际上充当允许多个任务共享物理内存的缓存,其中虚拟内存空间的总大小可以大于物理内存的大小,或大于分配到一个或多个任务的物理内存,因此物理内存和/或物理内存的部分作为“缓存”。如本文档中其它地方所述,可以管理任务的物理内存占用。该管理模块可以是单独的模块(如106中),或可以是一个或多个操作系统、虚拟机监测器等的整体部件。可以存在多个缓存和/或缓冲区子系统,因此可以利用数个占用配额参数并且将该参数存储于任务的性能配置文件中。可以在硬件,或软件(固件),或硬件和软件(固件)的组合中体现该缓存和缓冲区。可以修改任务的占用配额,以便工作完成速率与预期工作完成速率以闭环形式匹配,其中可以增加占用以满足预期工作速率和/或在达到或超过预期工作速率时减少占用。占用配额的修改可以利用可以是任务并且取决于任务状态的速率适应函数。可以利用相对于占用配额的任务优先级以牺牲低优先级的任务来保证某些较高优先级的任务满足其预期工作。在一些实现方式中,管理模块106可以通过决定/控制最大与最小占用配额和/或占用配额允许的最大与最小改变等(例如,通过策略/规则集)控制占用配额的整体分配。I/O带宽管理模块360可以管理计算机系统的输入输出子系统利用的带宽(该带宽为每单位时间数据转移的测量)。可以通过I/o带宽管理器作为性能资源来管理通过任务执行的或者通过例如代表任务的I/o请求的操作系统进行的I/O操作,以确保I/O操作的任务性能需求得以满足。任务的I/O带宽可以是性能配置文件的一部分。可以静态地设置该性能(例如,基于程序状态),或者可以动态地计算该性能,比如通过I/o带宽管理器。可以基于任务性能调整动态I/o带宽值,例如,满足其计算的最后期限或从依照预期工作速率与工作完成速率相比下的执行的反馈。I/O带宽管理器可以在某些已配置的限制中调整I/O带宽参数,该限制可以是系统级配置的限制和包括于任务的性能配置文件中的限制的组合。可以利用进度误差和/或 进度限制误差值,或预期的I/o速率,或进度误差和/或进度限制误差值与预期的I/O速率的组合,对I/O带宽加以修改。可以做出I/O带宽速率的计算以便I/O带宽可以增加或减少,取决于进度和/或进度限制误差值和阈值。一般来说,可以确定进度和/或进度限制误差值和阈值,以便任务的已完成工作速率与待完成工作速率匹配,而不多余地使用I/o带宽。任务的工作可以是I/o带宽速率,在该情况下,任务的主要工作是按某一速率的I/O数据的传输。可以调整作为任务的I/o带宽,以便已完成工作速率与待完成工作速率以闭环形式匹配;其中可以增加I/o带宽以满足预期工作速率和/或当预期工作速率正在超过考虑的进度和/或进度限制误差时,减少I/o带宽。可以通过I/O带宽分配来分配I/O资源,可以通过I/O带宽管理器来管理I/O资源,以便提供系统性能的保证。该保证可以是,总I/o带宽并没有超过分配,或牺牲其它任务以便某些任务接收其I/o带宽(根据策略/规则集)。I/O带宽管理模块可以通过在I/O子系统模块108中设置带宽参数来控制I/O带宽,由于存在该带宽控制机构,或可以是处理系统或计算机系统一部分的其它I/o组件,或联接到处理系统或计算机系统的其它I/o组件,比如存储在系统内存150中的程序。I/O带宽参数可以与任务(或任务组)相关,以便系统分配带宽到任务或代表任务。在一些变型中,I/O带宽参数可以包括跟踪任务ID以便与I/O操作关联,从而I/O带宽管理模块和分别的I/O子系统可以将数据传输归属到特定的任务。可以在硬件,或软件(固件),或硬件和软件(固件)的组合中实现I/o带宽控制机构。在一些实现方式中,可以利用DMA (Direct memory access (直接内存访问))控制器。直接内存访问是现代计算机和微处理器的特征,直接内存访问允许在计算机中的某些硬件子系统访问系统内存,对于中央处理单元独立地读和/或写。许多硬件系统应用DMA,包括磁盘驱动控制器、显卡、网卡、声卡以及图形处理单元(GPU)。也可以将DMA用于多核处理器中(特别是在片上多处理器系统中)的芯片内部数据传输,其中多核处理器的处理元件配备有本地存储器(通常称为暂存存储器),并且可以将DMA用于在本地存储器和主存储器之间传输数据。I/O带宽管理器可以通过机构控制I/O带宽,该机构通过带宽成型将带宽控制机构设置到I/o操作。可以通过延迟某些数据传输请求直到经过足够的时间以便为传输积累信度(其中信度是随着时间以某一速率积累的数据的测量,表示带宽)来完成带宽成型。I/
O操作或数据传输的带宽管理,包括DMA,可以在硬件中实现操作或通过软件(或固件)实现操作。多个I/O子系统,或子系统的实例,可以存在设备和接口,因此可以利用多个I/O带宽参数,并将其存储于任务的性能配置文件中。可以在硬件,或软件(固件),或硬件和软件(固件)的组合中体现该I/o子系统。可以利用相对于I/O带 宽的任务优先级以牺牲低优先级的任务来保证某些较高优先级的任务满足其预期工作。在另一个实现方式中,I/o带宽管理系统可以基于任务来请求I/o操作优先级,该任务的任务已完成工作与任务待完成工作相匹配,将进度误差和进度限制误差考虑在内。例如,可以对于感兴趣的所有任务考虑进度误差和进度限制误差,以便对具有在某一进度限制误差值之内的较大的进度误差的任务给出的优先级在具有在进度限制误差值之内的较小的进度误差的任务之上。进度误差和进度限制误差可以用于直接或通过由I/O带宽管理器实现的一个或多个速率适应函数,调整任务的I/O带宽参数。例如,如果误差大于某些限制,一个速率适应函数可以仅调整I/o带宽,而另一个适应函数可以仅改变需求速率,该需求速率应该是持续长于某段时间的误差。该速率适应函数可以是依赖于系统和/或依赖于任务的。速率适应函数可以是任务性能配置文件的一部分。可以利用相对于I/O带宽的任务优先级以牺牲低优先级的任务来保证某些较高优先级的任务满足其预期工作。在一些实现方式中,管理模块106可以通过决定/控制最大与最小I/O带宽和/或带宽参数(例如,策略/规则集)控制I/O带宽的总体分配。调度器模块130可以基于包括任务优先级的任务参数,从调度器模块130的任务列表选择下一个待执行任务。调度器模块130可以指示高优先级的任务准备好到处理器系统10。处理器系统10 (或在处理器系统10上的软件)可以决定抢先地切换当前运行的任务,并且运行较高优先级的任务。调度器模块130或在处理器系统中的软件可以表示,将选中较高优先级的任务以执行,或许替换当前运行的任务。在该情况下,当前运行的任务或在处理器系统10中执行的任务也可以指示到性能资源管理器120。当该情况发生时,可以将用于当前运行的任务的计量模块110的状态保存在任务的环境中,并且计量模块致力于通过性能资源管理器监测新选中的任务(通过更新在计量模块之中的模块210、220和比较器函数)。相似地,可以修改性能资源管理器中的额外状态,作为该任务切换的结果。在多处理器系统中,可以在逐个处理器的基础上指定调度,以使在特定处理器上的任务可以受到该任务的进度误差和/或进度限制误差的影响。对于多线程系统,该情况也可以在逐个线程的基础上完成。图5是显示方法500的过程流程图,其中,通过处理器系统执行的多个任务在510处得以监测。基于监测,在520处,通过计算对于每个任务的至少一个进度误差和进度限制误差来标识需要性能资源调整的任务。随后,在530处,调整分配给每个已标识任务的处理器系统的性能资源。例如,调整可以包括一个或多个的调整执行任务的处理器系统中至少一个处理器的时钟速率,调整将由任务利用的缓存和/或缓冲区的数量,调整将由任务利用的输入/输出(I/O)带宽的数量。本发明所描述的主题的各个实现方式可以实现于数字电子电路、集成电路、特别设计的 ASIC (application specific integrated circuits (专用集成电路))、计算机硬件、固件、软件,和/或上述情况的组合中。该类各种实现方式可以包括一个或多个计算机程序中的实现方式,所述计算机程序在包括至少一个可编程处理器的可编程系统上是可执行和/或可翻译的,该可编程处理器可以是特殊或通常的用途,其被联接以便从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,并传送数据和指令到存储系统、至少一个输入设备和至少一个输出设备。这些计算机程序(也称为程序、软件、软件应用程序或代码)包括对于可编程处理器的机器指令,该计算机程序可以在高级程序和/或面向对象的编程语言,和/或在汇编语言/机器语言上实现。在本文中,术语“机器可读的媒体”是指用于将机器指令和/或数据提供到可编程的处理器的任何计算机程序产品、设备和/或装置(例如,磁盘、光盘、存储器、可编程逻辑器件(PLD)),包括接收机器指令作为机器可读的信号的机器可读的媒体。术语“机器可读的信号”是指用于将机器指令和/或数据提供到可编程的处理器的任何信号。尽管上面详细描述了少数变形,其它修改是可能的。例如,显示在伴随附图和本文中所描述的逻辑流不需要特定顺序或相继顺序加以显示,以实现预期的结果。其它实现方 式可以在随后的权利要求范围内。
权利要求
1.一种方法,包括 通过处理器系统监测多个任务的执行; 基于所述监测,通过计算对每个任务的至少一个进度误差和进度限制误差,标识需要性能资源调整的任务;以及 调整分配给每个已标识任务的所述处理器系统的性能资源; 其中,调整性能资源包括下述项的一个或多个 调整在执行所述任务的所述处理器系统中的至少一个处理器的时钟速率; 调整将被所述任务利用的缓存和/或缓冲区的数量;或调整将被所述任务利用的输入/输出(I/o)带宽的数量。
2.根据权利要求I所述的方法,其中所述进度误差等于由所述任务的已完成工作与由所述任务的待完成工作之间的差。
3.根据权利要求I或2所述的方法,其中所述进度限制误差等于对已完成工作的工作 完成速率与对所述任务的剩余的预期工作速率之间的差。
4.根据前述权利要求中的任意一项所述的方法,其中每个任务从一组中选择,所述组包括单个任务、一组任务、线程、一组线程、单个状态机、一组状态机、单个虚拟机以及一组虚拟机。
5.根据前述权利要求中的任意一项所述的方法,其中所述处理器从一组中选择,所述组包括单个处理器、多处理器、支持同步多线程的处理器系统、多核处理器。
6.根据前述权利要求中的任意一项所述的方法,其中每个任务具有相关的执行优先级和执行最后期限,并且其中调整所述处理器系统的所述性能资源,以便使每个已标识的待完成任务能够按照所述任务的相应执行最后期限和根据所述任务的相应执行优先级被完成。
7.根据前述权利要求中的任意一项所述的方法,其中所述性能资源在逐个任务的基础上加以调整。
8.根据前述权利要求中的任意一项所述的方法,其中每个任务具有相关的任务性能配置文件,通过调度器模块,所述性能配置文件用于建立所述任务的执行优先级和执行最后期限。
9.根据权利要求8所述的方法,其中所述相关的任务性能配置文件指定至少一个性能参数。
10.根据权利要求9所述的方法,其中所述性能参数是缓存占用配额,所述缓存占用配额指定将由所述任务使用的缓冲区的初始最大和/或最小数量,其中在所述任务的执行期间,所述缓存占用配额动态地加以调整。
11.根据权利要求10所述的方法,其中基于对所述任务的进度误差,动态地调整所述缓存占用配额。
12.根据权利要求10或11所述的方法,其中所述性能参数为所述任务的执行指定初始的带宽需求,其中在所述任务的执行期间,动态地调整所述带宽需求。
13.根据前述权利要求中的任意一项所述的方法,进一步包括 确定每个任务所需的处理器时钟需求速率;以及 基于对所有任务的已确定的处理器时钟需求速率,计算合计时钟需求速率;其中,调整所述处理器系统时钟速率以适应所述合计时钟需求速率。
14.根据权利要求13所述的方法,其中将所述处理器系统时钟速率调整为所述合计时钟需求速率加上开销需求速率。
15.根据权利要求13或14所述的方法,其中确定处理器时钟需求速率是当前处理器系统时钟速率与对所述任务的完成的预期执行时间的积,除以时间间隔。
16.根据权利要求13到15中的任意一项所述的方法,其中基于影响所述任务性能的进度误差,更新每个任务的处理器时钟需求速率,其中基于每个任务的已更新的处理器时钟需求速率,更新合计时钟需求速率。
17.根据权利要求16所述的方法,其中对每个任务的处理器时钟需求速率或合计时钟需求速率的更新,应用至少一个适应函数以抑制或增强快速的速率改变。
18.根据权利要求13到17中的任意一项所述的方法,其中当任务为随时可运行时,将 对每个任务的处理器时钟速率添加到合计时钟需求速率。
19.根据权利要求13到18中的任意一项所述的方法,其中在一段时间内计算合计时钟需求速率以便,有时处理器系统时钟速率高于合计时钟需求速率,而在其它时间,所述处理器系统时钟速率低于所述合计时钟需求速率。
20.根据权利要求13到19中的任意一项所述的方法,其中所述处理器系统包括至少两个处理器,并且其中为所述至少两个处理器的每一个确定合计时钟需求速率,并且所述合计时钟需求速率基于使用相应的处理器执行的任务的处理器需求速率,其中分别和相应地调整所述至少两个处理器的每一个的时钟速率。
21.根据前述权利要求中的任意一项所述的方法,其中每个任务分配有物理内存,并且其中所述方法进一步包括使至少一个任务能够利用至少一个虚拟内存地址空间,所述至少一个虚拟内存地址空间被映射到所述物理内存的至少一部分。
22.—种方法,包括 通过处理器系统监测多个任务的执行,以便为每个任务确定至少一个监测值,所述至少一个监测值表征影响所述处理器系统的相应任务的性能的至少一个因素,每个任务具有相关的任务性能配置文件,所述任务性能配置文件指定至少一个性能参数;以及 对于每个任务,将相应的监测值与在相关的任务性能配置文件中指定的相应的至少一个性能参数相比较; 对于每个任务,基于所述比较确定用于执行所述任务的性能资源是否应该被调整,或者用于执行所述任务的性能资源是否应该被保持;以及 当确定分配给所述任务的性能资源应该调整时,通过修改对于每个任务的处理器时钟速率,调整性能资源,当确定分配给所述任务的性能资源应该保持时,保持每个任务的性能资源。
23.根据权利要求22所述的方法,其中监测值表征由所述任务完成的工作量。
24.根据权利要求23所述的方法,其中由所述任务完成的工作量来自于下述中的至少一个执行所述任务时传输的数据量、执行所述任务时完成的处理器指令数、处理器周期、执行时间。
25.根据前述权利要求22到24中的任意一项所述的方法,进一步包括 对于每个任务,确定所述任务的当前程序状态;其中相关的任务性能配置文件指定具有不同的性能参数的两个或多个程序状态,并且其中将监测值与当前程序状态的性能参数相比较。
26.根据前述权利要求22到25中的任意一项所述的方法,进一步包括 修改执行中任务的至少一个性能配置文件,以便改变相应的性能参数; 其中将监测值与已改变的性能参数相比较。
27.根据前述权利要求22到26中的任意一项所述的方法,进一步包括 确定每个任务所需的处理器时钟需求速率; 基于对所有任务确定的处理器时钟需求速率计算合计时钟需求速率; 调整处理器系统时钟以适应合计时钟需求速率。
28.根据权利要求27所述的方法,进一步包括 基于预期的和完成的工作速率与至少一个进度限制速率之间的差,动态地调整特定任务所需的处理器时钟需求速率。
29.根据权利要求28所述的方法,其中每个任务所需的处理器时钟需求速率基于完成相应任务的预期时间。
30.根据权利要求29所述的方法,进一步包括 将处理器系统时钟速率降低到不影响完成任务的预期时间的级别。
31.根据前述权利要求28到30中的任意一项所述的方法,进一步包括 以睡眠状态或空闲状态降低处理器系统时钟速率,直到合计时钟需求大于零的时刻。
32.根据前述权利要求28到31中的任意一项所述的方法,其中处理器系统时钟速率在一段时间内波动高于和低于合计时钟需求速率,只要平均的处理器系统时钟速率在所述一段时间内高于或等于所述合计时钟需求速率即可。
33.根据前述权利要求22到32中的任意一项所述的方法,其中所述性能配置文件进一步指定占用配额,所述占用配额影响任务能够利用的缓存和/或缓冲区的数量。
34.根据权利要求33所述的方法,其中基于预期的或已完成的工作速率与至少一个进度限制速率之间的差,动态地调整所述占用配额。
35.根据前述权利要求22到34中的任意一项所述的方法,其中控制由处理器系统的输入/输出子系统利用的带宽,以便每个任务的性能需求得到满足。
36.根据权利要求35所述的方法,其中基于预期的或已完成的工作速率与至少一个进度限制速率之间的差,动态地调整利用的带宽数量。
37.一种处理器系统,包括 至少一个处理器; 多个缓冲区; 调度器模块,所述调度器模块调度将由所述至少一个处理器执行的多个任务; 计量模块,所述计量模块监测所述多个任务的执行,并且标识需求额外处理资源的任务; 自适应时钟管理器模块,执行任务时,所述自适应时钟管理器模块选择性地调整所述至少一个处理器的时钟速率; 缓存占用管理器模块,所述缓存占用管理器模块选择性地调整将由任务利用的缓存和/或缓冲区的最大数量;以及输入/输出带宽管理器模块,所述输入/输出带宽管理器模块选择性 地调整将由任务利用的输入/输出(I/o)带宽的最大数量。
全文摘要
通过处理器系统监测多个任务的执行。基于该监测,通过计算每个任务的进度误差或进度限制误差的至少一个,来标识需要性能资源调整的任务。此后,调整分配给每个已标识任务的处理器系统的性能资源。该调整可以包括调整执行任务的处理器系统中至少一个处理器的时钟速率,调整将由任务利用的缓存和/或缓冲区的数量,和/或调整将由任务利用的输入/输出(I/O)带宽的数量。也描述了相关的系统、装置、方法和产品。
文档编号G06F9/44GK102906696SQ201180025409
公开日2013年1月30日 申请日期2011年3月25日 优先权日2010年3月26日
发明者G·A·吉布森, V·波佩斯库 申请人:维尔图尔梅特里克斯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1