多处理器系统中任务调度的切换策略的制作方法

文档序号:20599203发布日期:2020-05-01 21:29阅读:206来源:国知局
多处理器系统中任务调度的切换策略的制作方法

本发明实施例涉及控制与优化多处理器计算系统的性能与功率。



背景技术:

许多现代计算系统实现动态电压以及频率缩放(dynamicvoltageandfrequencyscaling,dvfs),其是一种在运行时自动调整处理器频率与电压的技术。处理器的工作频率以及电压的增加可以提高计算性能,但也会增加功率消耗。在一些系统中,dvfs可以与任务调度协调,使得当在处理器上放置任务或从处理器移除任务时,调整处理器的工作频率。当能量感知调度器调度任务时,调度器将功耗考虑在内。

能量感知调度(energy-awarescheduling,eas)是用于计算系统来优化任务放置决定的功率消耗的任务调度技术。执行能量感知调度的调度器通常将任务放置在多个处理器的子集上并保持系统中的其他处理器空闲来节省功率。然而,将任务聚集在少量的处理器上与负载均衡(loadbalancing)相反,负载均衡将工作量分散在多个处理器之间来提升性能。

因此,需要一种计算系统来管理关于任务调度的性能与功率消耗之间的折衷。



技术实现要素:

本发明提供了一种多处理器系统中任务调度的方法,以权衡任务调度的性能与功率消耗。

在一个实施例中,提供了一种系统。所述系统包括排列在多个群集中的多个处理器,不同的群集具有不同的功率以及性能特性。所述系统包括调度任务到所述多个处理器的任务调度器。所述任务调度器响应于调度事件触发的检测,用于基于所述多个群集中最高容量群集中所有处理器的至少相应的工作频率以及负载,在能量优化的第一目标以及负载均衡的第二目标之间识别调度目标。根据所识别的所述调度目标,所述任务调度器用于调度给定任务到在所述多个群集的所述多个处理器中选择的处理器。

在另一实施例中,提供了一种多处理器系统中任务调度的方法。所述方法包括:检测由任务调度器触发的调度事件,所述任务调度器将任务调度到排列在多个群集中的处理器,不同的群集具有不同的功率以及性能特;基于所述多个群集中最高容量群集中所有处理器至少相应的工作频率以及负载,在能量优化的第一目标与负载均衡的第二目标之间识别调度目标;以及根据所识别的所述调度目标,调度给定任务到在所述多个群集的所述多个处理器中选择的处理器。

本发明基于最高容量群集中与非最高容量群集中处理器所消耗的容量作为切换条件,将能量感知调度与容量感知调度相结合,有效地平衡了任务调度的性能与功耗。

在结合附体阅读以下对具体实施例的描述后,本发明的其他方面及特征对本领域普通技术人员将是显而易见的。

附图说明

本发明以示例而非限制的方式示出,在附图中,相同的附图标记表示相似的组件。需要注意的是,本发明中对“一个”实施例的不同引用不一定指相同的实施例,以及这种引用意味着至少一个。此外,当结合实施例描述特定特征、结构或者特性的时,认为无论是否明确描述,结合其他实施例实现这种特征、结构或者特性都在本领域技术人员的知识范围内。

图1示出了根据一个实施例的多处理器系统。

图2示出了根据一个实施例的用于确定调度目标的切换策略(switchpolicy)的整体流程图。

图3a示出了根据一个实施例的在切换策略中定义的第一切换条件。

图3b示出了根据一个实施例的在切换策略中定义的第二切换条件。

图4示出了根据一个实施例的转折点频率的示例。

图5示出了根据一个实施例的由处理器执行不同指令而改变的转折点频率。

图6示出了根据一个实施例的用于在多处理器系统中任务调度的方法的流程图。

具体实施方式

在下文的描述中,给出了许多具体细节。然而,应当理解,本发明的实施例可以不需要这些具体的细节来实施。在其他实施例中,没有具体示出公知的电路、结构以及技术以避免混淆本发明的描述。然而本领域普通技术人员将能够理解,可以不需要这些特定细节来实施本发明。根据所包括的描述,本领域技术人员将能够实施适当的功能而不需要过度实验。

本发明的实施例提供了一种用于多处理器系统的运行机制,以在备选调度目标中确定任务调度目标。例如,一个调度目标可以是最小化能量消耗,以及另一调度目标可以是平衡多个处理器之间的工作量。在一个实施例中,系统使用能量感知调度作为目标是优化能量消耗的预设调度。系统被提供定义两个切换条件的切换策略。当两个切换策略的任一个被检测到或评估为真时,系统从能量感知调度切换到容量感知调度(capacity-awarescheduling),目的是为了平衡工作量。当没有切换条件被检测到或评估为真时,系统使用能量感知调度用于任务调度。

在一个实施例中,不同群集(cluster)中的处理器具有不同的功率以及性能特性,而相同群集中的处理器具有相同的功率以及性能特性。在一个实施例中,切换策略可以将第一切换条件定义为“当最高容量群集中所有处理器所消耗的容量的总和超过总容量阈值时”,以及将第二切换条件定义为“当其他群集中至少一个处理器所消耗的容量超过容量阈值时”。在一个实施例中,不同群集具有不同的容量阈值,容量阈值的定义将在后文详细描述。

在一些系统中,“处理器”可以是中央处理单元(cpu)、数字信号处理器(dsp)、多媒体处理器、图像处理单元(gpu)、向量处理器或其他通用或专用处理电路。在一些系统中,处理器可以与“核心”或“处理器核心”相同,而在一些其他系统中,处理器可以包括多个核心。能够理解的是,此处描述的切换策略能够适用于在多个群集中排列的任何类型的处理器。

图1示出了根据一个实施例的多处理器系统110的示例。多处理器系统110包括设置在两个或多个群集中(例如,群集(0)、群集(1)……群集(m))的两个或多个类型的处理器,其中m可以是任何正整数。虽然群集(0)以及群集(1)的每一个中示出了两个处理器,但是每一群集可以包括多于两个处理器且不同群集可以包括不同数量的处理器。在一个实施例中,多核处理器系统110是片上系统(system-on-a-chip,soc)。

在一个实施例中,相同群集中的处理器具有相同的处理器类型,以及不同群集中的处理器具有不同的处理器类型。不同处理器类型的处理器具有不同的硬件特性,其可以由它们的容量(例如,通过每秒百万指令(millioninstructionspersecond,mips)测量)与/或能量效率(例如,通过功率消耗测量)来测量。不同处理器类型的处理器共享相同的指令集架构(instructionsetarchitecture,isa),即,它们可以执行相同的程序以及软件应用程序。在一个实施例中,不同处理器类型的处理器可以具有不同的微架构来递送不同的计算性能以及不同的功率效率。

在图1的实施例中,每一群集都可以存取存储器120。存储器120可以包括片上以及片外存储设备,如动态随机存取存储器(dram)、静态ram(sram)、闪速存储器以及其他易失性或非易失性存储设备。每一群集接收来自电源111的功率以及来自时钟电路112的时钟信号。在一个实施例中,多处理器系统110耦合到网络接口130来连接到网络(例如,个人局域网、局域网、广域网等)。能够理解的是,图1的实施例为了说明性目的而简化,其还可以包括额外的硬件组件。

在一个实施例中,多处理器系统110包括控制器170来控制多处理器系统110的功率以及性能以满足系统性能需求以及功率预算。控制器170可以通过确定要开启(即,启动)处理器的数量以及通过控制所启动的处理器的操作点(例如,频率以及电压)来动态地管理功率以及性能。

在一个实施例中,多处理器系统110包括一组性能监视器180(例如,传感器与计数器)来监测在运行时每一处理器的功率消耗以及性能(例如,处理器时间、利用率、工作频率(operatingfrequency)、电压、温度等)。根据性能监视器180的输出,控制器170可以基于性能监视器180的输出调整每一处理器的电压以及工作频率。在一个实施例中,控制器170可以进一步基于由处理器执行的指令的类型来调整每一处理器的电压以及工作频率。如下文结合图5所描述的,功率表150可以记录每一处理器(或处理器类型)的功率与性能之间的关系。在一个实施例中,功率表150可以包括每一处理器的性能指数与功率指数,其指示处理器每一操作点的功率-性能关系。功率表150可以由控制器170使用来选择启动哪些处理器以及选择所启动处理器的最节能操作点。控制器170然后配置电源111(例如,稳压器)以及时钟电路112来向每一启动的处理器提供所选择的操作点。

在一个实施例中,多处理器系统110还包括调度器160(也称为任务调度器),其在多个处理器之间分配以及调度任务。调度器160负责每当有新任务、唤醒任务或者其他还未调度的任务等待被调度时的任务放置。调度器160确定将任务放置在哪一处理器上。调度器160也负责负载均衡操作。在一些实施例中,负载均衡操作是用于平衡多处理器系统110中所有处理器或所启动处理器的工作量的周期性操作。

在一个实施例中,调度器160基于性能监视器180的输出保持追踪每一处理器的负载(即,利用率)。调度器160将处理器(或多个处理器)所消耗的容量与容量阈值进行比较来确定是否应该启用切换策略(即,是否切换任务调度的目标)。相对于处理器的负载以及工作频率定义处理器所消耗的容量。处理器的负载指示在给定时间周期内由处理器执行的工作量(例如,60%负载指示60%的处理器周期被用于执行工作)。处理器所消耗的容量可以通过将处理器的工作频率乘以处理器的负载来计算。因此,在较高频率运作的处理器相比于在较低频率运作的处理器,相同负载的情况下具有更高的消耗容量。

在一个实施例中,可以在处理器系统110中的处理器的预定工作频率将处理器的容量阈值设置为80%容量。如果在容量比较时处理器没有以预定频率操作,可将它的负载标准化到预定频率,例如,在1ghz的90%负载被标准化到2ghz的45%负载。在一些实施例中,容量阈值可以由整数、分数或另一数据表示来表示,容量阈值通过将处理器的预定工作频率乘以处理器的预定负载来计算。因此,容量比较不仅基于处理器的负载,还基于比较时处理器的工作频率。

调度器160根据容量比较的结果确定应用哪一调度目标。然后,调度器160相应地调度等待任务(例如,新分配的任务、从睡眠或空闲唤醒的任务、排队等待的任务等)。根据调度目标,调度器160也可以周期性地确定是否执行或跳过负载均衡操作。例如,当触发调度器160来执行负载均衡操作时,如果当时的调度目标是优化能量消耗,调度器160可以跳过负载均衡操作。

虽然调度器160示出为处理器之外的模块,在一个实施例中,调度器160包括由处理器执行的软件组件。在一些实施例中,调度器160是由一个或多个处理器执行的操作系统(operatingsystem,os)内核(kernel)的一部分。

图2示出了根据本发明一个实施例的由诸如多处理器系统110之类的系统使用的切换策略的整体流程图200。在步骤210,系统检测调度事件触发,其可以是调度任务或负载均衡操作的请求。在步骤220,系统将多个处理器的所消耗的容量与它们各自的容量阈值进行比较。系统可以从性能监视器(例如,图1的性能监视器180)接收每一处理器的负载信息以及工作频率。在步骤230中,该比较结果用于确定第一切换条件(最高容量群集中所有处理器所消耗的容量的总和是否超过最高容量群集的总容量阈值)是否为真或者第二切换条件(任何其他群集中任何处理器所消耗的容量是否超过该群集的该处理器的容量阈值)是否为真。如果第一切换条件或第二切换条件为真(其包括第一切换条件以及第二切换条件两者都为真的情况),在步骤240,系统切换到容量感知调度用于任务调度。如果没有条件为真,在步骤250,系统使用能量感知调度用于任务调度。当检测到另一调度事件触发时,重复步骤210-250的操作。

图3a示出了根据一个实施例的图2的步骤230所提到的第一切换条件的图式300。这一示例示出了三个群集,每一群集具有两个cpu。群集(2)是最高容量的群集。每一cpu的容量由对应矩形条的高度所表示。该容量可以通过mips或其他性能测量指针来测量。cpu所消耗的容量由填充到对应矩形条中图案所表示。对于不是最高容量群集的群集(例如,群集(0)或群集(1)),相同群集中的处理器具有相同的容量阈值(例如,th0或th1),以及不同群集中处理器具有不同的容量阈值。对于最高容量群集,将最高容量群集中所有处理器所消耗容量的总和与总容量阈值(th2)进行比较。

当最高容量群集中所有处理器所消耗容量的总和超过总容量阈值时,调度目标从默认能量优化(即,能量感知调度)切换到负载均衡(即,容量感知调度)。在一个实施例中,当前调度器接收到负载均衡操作的请求或检测到触发时,检查处理器所消耗的容量。在图3a中,当最高容量群集的所消耗容量的总和大于总容量阈值时(th2),根据负载均衡目标,调度器可以尝试将工作量从cup_4以及cpu_5转移到其他处理器(如果两个处理器之一上的工作量可以被分割与迁移)。如果有等待被放置的任务,调度器将根据负载均衡目标放置该任务。

图3b示出了根据一个实施例的在图2步骤230所提到的第二切换条件的图式350。这一示例示出了与图3a相同的三个群集。图式350示出了群集(1)中cpu_2的负载超过了它的容量阈值(th_1)。当不在最高容量群集中的任何处理器所消耗的容量超过了它的容量阈值时,调度目标从默认能量优化(即,能量感知调度)切换到负载均衡(即,容量感知调度)。在一个实施例中,当调度器接收到负载均衡操作的请求或触发时,检查处理器的负载。如图3b所示,如果不在最高容量群集中的任何处理器的负载超过了它的容量阈值,根据负载均衡目标,调度器可以尝试将工作量从cpu_2转移到其他处理器(如果cpu_2上的工作量可以被分割以及迁移)。如果有等待被放置的任务,调度器将根据负载均衡目标放置该任务。

当调度器160检测或接收调度事件触发时,可以并行或以任何顺序评估第一切换条件以及第二切换条件。当第一切换条件以及第二切换条件都未被评估为真时,调度器160根据能量感知目标来调度任务以优化能量消耗(即,来减少或最小化功率消耗)。

如图3a以及图3b的示例所示,群集彼此间的容量阈值不同。每一群集的容量阈值可以被设置为一个值,该值通过将群集的预定负载水平乘以预定频率计算所得。在一个实施例中,当群集不是最高容量群集时,预定频率是转折点频率。该转折点频率可以是群集的甜蜜点(sweet-point)频率或最大工作频率。群集的转折点频率(即,群集中任何处理器)可以根据处理器的功率以及性能曲线确定。

图4示出了根据一个实施例的转折点频率的示例的图式400。纵轴是功率消耗(也称为能量消耗)以及横轴是频率。图式400包括三条曲线410、420以及430,分别表示群集(0)、群集(1)以及群集(2)中处理器的功率-频率特性。需要注意的是,因为在处理器运作的频率直接与处理器的性能成比例,处理器的功率-频率特性也称为功率-性能特性。群集中处理器的操作点被定义在对应的曲线上(例如,群集(0)的曲线410)。占据相邻频率区域的曲线也称为相邻曲线(例如,曲线410以及420是相邻曲线,以及曲线420与430是相邻曲线)。图式400示出了曲线410与曲线420相交,以及曲线420不与曲线430相交。交叉频率点f(0)也称为甜蜜频率点,甜蜜频率点f(0)表示群集(0)的能量高效工作频率范围的上边界以及群集(1)的能量高效工作频率范围的下边界。这些边界不是工作频率的严格限制,例如群集(0)也可超过f(0)操作,以及群集(1)也可低于f(0)操作。边界仅仅指示群集是否在对该群集能量高效的频率范围内操作。每一甜蜜点频率与两个群集有关,例如f(0)与群集(0)以及群集(1)有关。对于低于f(0)的频率,群集(0)中每一处理器的能量效率大于群集(1)中每一处理器的能量效率。对于大于f(0)的频率,群集(0)中每一处理器的能量效率低于群集(1)中每一处理器的能量效率。对于群集(0),它的转折点频率是甜蜜点频率f(0)。因此,甜蜜点频率f(0)是大于群集(0)的能量效率以及低于群集(1)能量效率的工作频率。

图式400进一步示出了曲线不与彼此相交的情况。这一情况中,群集(1)的转折点频率是其在曲线420上的最大工作频率,即f(1)。因为群集(2)是最高容量群集以及占据图式400中最高的频率区域,它的转折点频率是其在曲线430上的最大工作频率,即f(2)。

虽然图4中仅示出了三个群集,能够理解的是,上述提到的特性可以扩展到任何数目的群集。此外,不同的群集可以表现出由不同曲线表示的不同特性。一些相邻曲线可以彼此相交,一些相邻曲线可以没有交叉点但具有重叠的频率区域,以及一些相邻曲线可以完全不具有重叠的频率区域。这些曲线以及曲线上的操作点,可以由测试结果以及实验确定。

返回参考图3a以及图3b,在一个实施例中,当处理器在其转折点频率操作时,评估切换策略的第一切换条件以及第二切换条件。例如,在图3b中,如果cpu_2在其转折点频率(例如,f(1))操作并且其负载超过了负载阈值,那么第二切换条件评估为真并且调度切换到容量感知调度。注意到的是,不同群集的负载阈值可以具有相同值或不同值。在一个实施例中,为了比较的目的,每一处理器的负载以及该处理器的负载阈值可以标准化到跨群集的公共频率,例如,公共频率可以是最高容量群集的最大工作频率(例如图4示例中的f(2))。

在一个实施例中,当处理器执行不同类型的指令时,每一处理器的功率-频率曲线可以变化。图5示出了根据一个实施例的两个处理器p1以及p2(其在不同的群集中)的功率-频率曲线。在这一示例中,实线曲线510以及520分别表示当每一处理器执行第一应用时p1以及p2的功率-频率曲线。虚线曲线530以及540分别表示当每一处理器执行第二应用时p1以及p2的功率-频率曲线。曲线510-540上的圆圈表示操作点。对于p1,曲线510上的每一操作点以及曲线530上对应的操作点具有相同的电压以及频率,例如曲线510以及530上最左操作点具有相同的电压以及频率,曲线510以及530上第二最左操作点具有相同的电压以及频率。等等。这同样适用于p2的曲线520以及540上的操作点。图5示出了当相同处理器执行不同应用时,功率-频率曲线可以是不同的(例如,垂直与/或水平移动、斜率与/或形状的不同等)。曲线上相同操作点的位置(相同处理器的实线曲线与虚线曲线之间)对于不同应用可能是不同的。

在图5的示例中,在由p1以及p2执行的两个应用之间(例如,由实线曲线表示的第一应用,以及由虚线曲线表示的第二应用)可能有不同的特性。例如,第一应用可以包括40%的整数指令、10%的浮点指令(floatingpointinstructions)以及50%的存储器存取指令。第二应用可以包括30%的整数指令、40%的浮点指令以及30%的存储器存取指令。指令的不同配置可能对处理器的功率以及性能有不同的影响。在一种情形中,当处理器执行引起较高功率的应用时,可能会降低处理器的容量阈值或者负载阈值。因此,在一个实施例中,多个处理器系统110(图1)根据由处理器执行的不同指令配置,可以动态地调整处理器的容量阈值与/或负载阈值来提高运行时的能量效率与性能。对于最高容量的群集,可以根据由最高容量群集中处理器执行的指令类型的组合调整群集的总容量阈值。

图6示出了根据一个实施例的用于多处理器系统中任务调度的方法600的流程图。方法600可以由图1的多处理器系统110来执行。

方法600开始于步骤610,当系统检测到由任务调度器触发的调度事件时,该任务调度器将任务调度到布置在多个群集中的处理器,不同的群集具有不同的功耗以及性能特性。在步骤620,基于多群集的最高容量群集中所有处理器的至少相应的工作频率以及负载,系统识别能量优化的第一目标以及负载均衡的第二目标之间的调度目标。在步骤630,系统根据所识别的调度目标,系统调度给定的任务到从多群集的多个处理器中所选择的处理器。

图2以及图6的流程图的操作已经参考图1的示例性实施例进行描述。然而,能够理解的是,图2以及图6的流程图的操作可以由不同于图1的实施例之外的本发明的实施例来执行,以及图1的实施例可以执行不同于参考流程图所讨论的操作。虽然图2以及图6的流程图示出了由本发明某些实施例执行的操作的特定顺序,能够理解的是,这一顺序是示例性的(例如,可选实施例可以以不同的顺序执行操作、组合某些操作、重叠某些操作等)。

虽然本发明已经以多个实施例的方式进行描述,本领域技术人员将认识到,本发明不限于所描述的实施例,以及可以在所附权利要求的精神与范围内对它进行修改与替换。因此,这些描述被视为说明性的而非限制性的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1