CN106716365B - 异构线程调度 - Google Patents
异构线程调度 Download PDFInfo
- Publication number
- CN106716365B CN106716365B CN201580051981.5A CN201580051981A CN106716365B CN 106716365 B CN106716365 B CN 106716365B CN 201580051981 A CN201580051981 A CN 201580051981A CN 106716365 B CN106716365 B CN 106716365B
- Authority
- CN
- China
- Prior art keywords
- cores
- thread
- core
- heterogeneous
- performance
- 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.)
- Active
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
-
- 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
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- 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/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
- Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
- Preparation Of Compounds By Using Micro-Organisms (AREA)
- Medicines Containing Material From Animals Or Micro-Organisms (AREA)
- Supply And Distribution Of Alternating Current (AREA)
Abstract
描述了异构线程调度技术,其中将处理工作负荷分布到处理***的异构处理核。可以基于被用来控制处理核的状态的全***范围电源管理考虑因素的周期性评估与根据线程特定策略做出的较高频率逐个线程布置策略的组合来实现异构线程调度。在一个或多个实施方式中,针对具有包括电力高效核和面向性能核的异构核的处理***周期性地分析***工作负荷上下文。基于该周期性分析,针对异构核中的某些异构核设定核状态,以控制电力高效核和面向性能核的激活以用于线程调度。然后,根据核状态来调度单独线程,以基于每个线程而将单独线程分配在异构核的活动核之间。
Description
背景技术
已经开发了移动计算装置以增加在移动环境中对用户可用的功能。例如,用户可以与移动电话、平板计算机或其它移动计算装置相交互以检查电子邮件、浏览web、编写文本、与应用相交互等。移动计算装置的开发者面临的一个挑战是高效的电源管理和电池寿命的延长。例如,由处理器满负荷或接近满负荷进行的延长的任务处理可以消耗装置电池并产生可能迫使装置关机的热条件。可以应用各种电源管理策略来控制处理器利用率,一般地以总体的装置性能为代价。如果针对装置实现的电源管理未能达到性能与电池寿命之间的良好平衡,则可能导致用户对装置和制造商的不满意。
发明内容
描述了异构线程调度技术,其中将处理工作负荷分布到处理***的异构处理核。可以基于被用来控制处理核的状态的全***范围电源管理考虑的周期性评估与根据线程特定策略进行的较高频率逐个线程布置策略的组合来实现异构线程调度。在一个或多个实施方式中,针对具有包括电力高效核和面向性能核的异构核的处理***周期性地分析操作上下文。基于该周期性分析,针对异构核中的至少某些异构核设定核状态,以控制电力高效核和面向性能核的激活以用于线程调度。然后,根据核状态来调度单独线程,以基于每个线程而将单独线程分配在异构核的活动核之间。
提供本发明内容是为了以简化形式介绍下面在详细描述中进一步描述的概念的选择。本发明内容并不意图标识要求保护的主题的关键特征或本质特征,其也不意图用来限制要求保护的主题的范围。
附图说明
图1图示出根据一个或多个实施方式的示例操作环境。
图2是描绘根据一个或多个实施方式的具有异构处理核的计算装置的示例细节的图。
图3是描述根据一个或多个实施方式的用于异构核之间的线程分配的示例程序的细节的流程图。
图4是描述根据一个或多个实施方式的用于基于线程策略的线程调度的示例程序的细节的流程图。
图5是描述根据一个或多个实施方式的用于选择性地控制处理***的异构核的状态的示例程序的细节的流程图。
图6是根据一个或多个实施方式的可以用于异构线程调度的***的框图。
具体实施方式
概览
一般地,装置可以实现电源管理策略以控制处理器利用率和热条件,但是电源管理决策可以负面地影响装置性能。因此,如果未充分地实现电源管理并促使性能受损,则装置的用户可能变得灰心。
描述了异构线程调度技术,其中将处理工作负荷分布到处理***的异构处理核。可以基于被用来控制处理核的状态的全***范围电源管理考虑因素的周期性评估与根据线程特定策略进行的较高频率逐个线程布置策略的组合来实现异构线程调度。作为示例而非限制,操作***可以包括被配置成执行周期性评估的电源管理器组件和被配置成在电源管理器组件的影响下进行较高频率逐个线层布置决策的线程调度器组件。
在一个或多个实施方式中,针对具有包括电力高效核和面向性能核的异构核的处理***周期性地分析操作上下文。基于该周期性分析,针对异构核中的至少某些异构核设定核状态(例如,活动、空闲、节流等)以控制电力高效核和面向性能核的激活,以用于线程调度。然后,根据核状态来调度单独线程以基于每个线程而将单独线程分配在异构核的活动核之间。
通过将全***范围电源管理考虑因素与线程特定策略组合,本文中所述的异构线程调度技术可以高效地在一组异构核之间分配工作负荷。另外,可以通过在不同的核之间智能地切换、更频繁地使用电力高效核和/或在任何可能的情况下将未使用或利用不足的核置于空闲状态来优化电力使用。此外,可以审慎地激活面向性能核,以在可接受的时间限制内服务于处理工作负荷和优先级任务。作为仅仅批量地在不同核的集群之间切换(例如,完全在性能核与低电力核之间切换)的替换,可以在各种情形中将具有不同特性的核的组合一起激活以优化线程布置、设备性能以及电力使用。
在随后的讨论中,提供了题为“操作环境”的小节且其描述了其中可以采用一个或多个实施方式的一个示例环境。在此之后,题为“异构线程调度细节”的小节描述了根据一个或多个实施方式的示例细节和程序。最后,题为“示例***”的小节描述了可以被用于异构线程调度的一个或多个实施方式的示例计算***、组件以及装置。
操作环境
图1一般地在100处图示出根据一个或多个实施例的操作环境。环境100包括计算装置102,其具有带有一个或多个处理器和装置(例如,CPU、GPU、微控制器、硬件元件、固定逻辑装置等)的处理***104、一个或多个计算机可读介质106、操作***108以及常驻于计算机可读介质上且可被处理***执行的一个或多个应用110。处理***104可被配置成包括并行地或串行地配置的多个独立处理器和一个或多个多核处理单元。多核处理单元可以具有包括在相同芯片或集成电路上的两个或更多处理器(“核”)。在一个或多个实施方式中,处理***104可以包括一组异构核,其提供一定范围的性能能力、处理效率以及电力使用特性,如下面更详细地描述的。
处理***104可以从应用110检索并执行计算机程序指令以向计算装置102提供大范围的功能,其包括但不限于游戏、办公效率、电子邮件、媒体管理、打印、联网、web浏览等。还可以包括与应用110有关的各种数据和程序文件,其示例包括游戏文件、办公文档、多媒体文件、电子邮件、数据文件、web页面、用户简档和/或偏好数据等。
可以将计算装置102体现为任何适当的计算***和/或装置,作为示例而非限制,诸如游戏***、台式计算机、便携式计算机、平板或板式计算机、诸如个人数字助理(PDA)之类的手持式计算机、蜂窝电话、机顶盒、可穿戴装置(例如,手表、腕带、眼镜等)等。例如,如图1中所示,可以将计算装置102实现为电视客户端装置112、计算机114和/或游戏***116,其被连接到显示装置118以显示媒体内容。替换地,计算装置可以是包括集成显示器122的任何类型的便携式计算机、移动电话或便携式装置120。还可以将计算装置配置为可穿戴装置124,其被设计成被用户穿戴、被附着到用户、由用户携带或者以其他方式由用户运输。图1中描绘的可穿戴装置124的示例包括眼镜、智能腕带或手表、以及小容器(pod)装置,诸如夹持健身装置、媒体播放器或***。可穿戴装置124的其它示例包括但不限于徽章、密钥卡(key fob)、访问卡以及指环、衣服、手套或项链,仅举几个例子。可以用各种组件(诸如一个或多个处理器和存储器装置)以及用不同组件的任何组合来实现计算装置中的任何计算装置。下面相对于图6示出并描述可表示包括计算装置102的各种***和/或装置的计算***的一个示例。
作为示例而非限制,计算机可读介质可以包括通常与计算装置相关联的所有形式的易失性和非易失性存储器和/或存储介质。这样的介质可以包括ROM、RAM、闪存、硬盘、可移动介质等。计算机可读介质可以包括“计算机可读存储介质”和“通信介质”两者,在图6的示例性计算***的讨论中可以找到其示例。
计算装置102还可以包括如上文和下文所述地操作的电源管理器模块126和线程调度器模块128。可以使用硬件、软件、固件和/或逻辑装置的任何适当组合来提供电源管理器模块126和线程调度器模块128。如所图示,可以将电源管理器模块126和线程调度器模块128配置为单独的独立模块。另外或替换地,可以将电源管理器模块126和线程调度器模块128组合和/或实现为另一模块的组件,诸如是操作***108和/或另一应用110的集成组件。
电源管理器模块126表示可操作用于评估全***范围电源管理考虑因素并基于该评估来管理处理器和核的可用性的功能。这可以涉及到分析各因素,其包括但不限于总体工作负荷、热条件、用户存在、处理器/核利用率和实用性(utility)、处理器/核的并发使用水平或“并发性”、应用上下文、装置上下文、优先级、上下文提示以及可以用来在***级驱动电源管理决策的其它性能度量。电源管理器模块126可以被配置成应用电源管理策略来基于全***范围性能度量和条件的评估,调整处理***104的性能。这可以涉及到控制处理***104包括的异构核的状态和/或可用性。例如,电源管理器模块126可以选择性地在低电力模式下将核状态设置成“停用(park)”未使用核(“停用”或“受限”状态),并在高工作负荷需求下进入较高电力模式而设置成“未停用”核(“未停用”或“可用”状态)。电源管理器模块126还可以将关于停用和未停用核的选择的指示传送到其它组件以传达核可用于进行工作直至下一次评估的可用性。
线程调度器模块128表示可操作用于管理处理工作负荷跨可用处理资源的分配的功能。这可以包括跨可用处理器和/或核对被称为“线程”的工作单元进行排队、调度、划分优先级以及分派。线程调度器模块128被配置成做出相对高频率的逐个线程布置决策,以根据线程特定策略跨处理***的核分配工作负荷。可以在电源管理器模块126的影响下进行逐个线程布置决策。例如,可以根据由电源管理器模块126进行的全***范围电源管理评估而使由线程调度器模块128进行的线程布置局限于异构核的子集。换言之,可以使线程调度器模块128限于电源管理器模块126使得可用于线程调度的核(例如,未停用核)。在以下小节中讨论了关于异构线程调度的这些及其它方面的细节。
环境100进一步描绘了计算装置102可以经由网络130通信耦合到服务提供商132,其使得计算装置102能够访问由服务提供商132使得可用的各种资源134并与之相交互。资源134可以包括通常由一个或多个服务提供商通过网络使得可用的内容和/或服务的任何适当组合。例如,内容可以包括文本、视频、广告、音频、多媒体流、应用、动画、图像、web页面等的各种组合。服务的某些示例包括但不限于在线计算装置(例如,“云”计算)、认证服务、基于web的应用、文件存储和合作服务、搜索服务、诸如电子邮件和/或即时消息发送之类的消息发送服务以及社交联网服务。
已描述的示例操作环境,现在考虑与异构线程调度的一个或多个实施方式相关联的示例细节和技术。
异构线程调度细节
为了进一步举例说明,考虑可以用来提供如本文中所述的异构线程调度的示例装置、组件、程序以及实施方式细节的本节中的讨论。一般地,在本节中描述的示例程序的上下文中可以采用在上文和下文相对于示例描述的功能、特征以及概念。此外,在本文档中相对于不同的图和示例描述的功能、特征以及概念可以相互之间互换,并且不限于在特定图或程序的上下文中的实施方式。此外,可以将与不同典型程序和本文的相应图的方框一起应用和/或以不同的方式组合。因此,可以以任何适当的组合使用在本文中相对于不同的示例环境、装置、组件以及程序所述的单独功能、特征以及概念,而不限于在本描述中枚举的示例所表示的特定组合。
示例装置
图2一般地在200处描绘了根据一个或多个实施方式的具有异构核的计算装置102的示例细节。作为示例而非限制,处理***104被描绘为具有面向性能核202和电力高效核204。面向性能核202表示针对高性能设计的核,并且电力高效核204表示被设计成消耗低电力的核。一般地,面向性能核202被配置成相对于电力高效核204减少用于完成的特定任务/线程的处理时间。同样地,电力高效核204被配置成相对于面向性能核204消耗用于完成特定任务/线程的较少电力。虽然表示了两个不同类型的核,但可以包括具有不同性质的附加类型的核,诸如被配置成提供性能和电源效率之间的不同平衡水平的一个或多个类型的核。因此,处理***104可以包括一组异构核,其提供一定范围的性能能力、处理效率以及电力使用特性。可以将本文中所述的异构线程调度应用于用于处理***104的异构核的任何适当配置。
作为示例而非限制,电源管理器模块126和线程调度器模块128在图2中被图示为被实现为操作***108的组件。例如,可以将电源管理器模块126和线程调度器模块128实现为操作***108的内核206的低级***组件。还可设想作为操作***108或另外的组件的其它实施方式。如上所指出的,电源管理器模块126表示可操作用于基于各种性能度量(上文和下文指出了其示例)来进行全***范围电源管理评估的功能。然后,电源管理器模块126可以设定与异构核相关联的核状态208以适当地将核激活或去激活(deactivate)。核状态208可以包括停用或受限状态,以及未停用或未受限状态,如前所述。还设想其它中间状态,诸如其中可以将核设置成在全性能的某个百分比或分数下操作的“节流”状态。因此,电源管理器模块126可以实现如下这样的电源管理策略,即:其将性能度量所指示的操作上下文与电源管理动作和核状态相关,并根据电源管理策略来引导核进入相应状态。在一个或多个实施方式中,电源管理器模块126可以进行操作以便以周期性间隔进行评估以在下一间隔期间(例如,在下一评估之前)控制核的可用性。当然,还可以采用按需和非周期性评估。相对于以下示例程序可以找到关于电源管理评估、核状态以及电源管理器模块126所表示的其它功能的附加细节。
如上所指出的,线程调度器模块128表示可操作用于管理处理工作负荷跨可用处理资源的分配的功能。一般地,以高于由电源管理器模块126做出的评估的频率逐个线程地做出经由线程调度器模块128做出的布置决策。作为示例而非限制,可以以约10毫秒以下的间隔调度线程,而电源管理评估可以以约30毫秒或更大的间隔发生。
线程调度器模块128可以被配置成指派并应用线程策略208以将工作分配在由电源管理器模块126使得可用的异构核的子集之间。线程策略208反映用于将工作布置在处理***104所包括的异构核的不同类型的核上的线程特定策略。可以基于各种准则来指派线程策略208,所述各种准则诸如应用类型、优先级、活动类型、线程种类、任务大小、时间最终期限以及可以适合于将线程和进程分类的其它参数。线程策略被配置成计及异构核的不对称性质,诸如与不同类型的核相关联的不同性能能力、处理效率以及电力使用特性。
在实施方式中,可以由***定义并支持多个不同的线程策略208。可以经由与线程相关联的策略属性来指示线程策略,诸如通过将参数的值设置成指示相应线程策略的不同数值。可以由应用选择或请求线程策略。另外或替换地,线程调度器模块128可以如上所指出地评估各种准则并使单独线程与适当策略匹配。线程调度器模块128还可以被配置成覆写由应用指定的策略。相对于以下示例程序可以找到关于线程调度、线程策略208以及线程调度器模块128所表示的其它功能的附加细节。
示例程序
相对于图3至5的示例程序来讨论异构线程调度技术的附加方面。可以利用在本文中且结合任何适当硬件、软件、固件或其组合描述的环境、***、装置和组件来实现在本文档中描述的程序。可以将该程序表示为一组方框,其指定由一个或多个实体执行的操作且不一定限于用于由相应方框执行操作的所示顺序。
图3是描述根据一个或多个实施方式的用于异构核之间的线程分配的示例程序300的细节的流程图。可以经由适当地配置的计算装置(诸如经由相对于图1和图2的示例计算装置描述的操作***108和/或其它功能)来实现程序300。还可以用各种方式将相对于程序300所述的单独操作和细节与在本文中相对于图4和图5的示例程序讨论的操作和细节组合。
周期性地分析用于具有包括电力高效核和面向性能核的异构核的处理***的操作上下文(方框302)。例如,可以将操作***108配置成评估性能度量以识别操作上下文,并且基于该操作上下文来做出用于装置的全***范围的电源管理决策。作为示例而非限制,操作上下文可以反映总体工作负荷、处理器/核之间的工作负荷分布、热条件、用户存在的指示、电力可用性(例如,电池电量、电源连接等)、应用类型、工作种类、优先级设置等中的一个或多个的组合。可以经由如本文中所述的电源管理器模块126或同类功能来进行评估。
基于操作上下文针对异构核中的至少某些异构核设定核状态,以控制电力高效核和面向性能核的激活以用于线程调度(方框304)。例如,作为分析的主题的处理***104可以包括可以基于操作上下文和电源管理策略的分析被选择性地激活或去激活的异构核。可以将电源管理策略配置成定义异构***的哪些核在不同的操作上下文中被停用和未停用。例如,在低电池状态下,一个或多个面向性能核可以在空闲状态下被停用以节省电力和/或一个或多个电力高效核可以解除停用至活动状态以服务于工作负荷。在另一示例中,可以将达到温度阈值的任何类型的核停用以避免过热和损坏。当一个或多个核被停用时,可以因此调整其它核的状态以提供用以处理当前工作负荷的容量。异构***的不同类型的核的各种不同组合可以由用于处理不同操作上下文的电源管理策略指定。在这里,操作***108可以被配置成响应于操作上下文的识别而应用策略以引导由电源管理策略指定的核状态的相应变化。电源管理策略可以反映用以在性能和电力使用之间达到平衡的设计决策。此外,电源管理策略可以是可由开发者和/或用户配置的,以使平衡更多地朝着性能或更多地朝着高效的电力使用移动。下面相对于图5的示例程序来讨论关于异构核的电源管理策略和控制状态的应用的附加细节。
可以在基于操作上下文做出的电源管理策略和核状态选择的影响下执行用于异构核的线程调度。特别地,可以根据基于周期性分析设定的核状态来调度单独线程,以基于每个线程在异构核的活动核之间分配单独线程(方框306)。例如,操作***108可以包括被配置成做出如前所述的高频率线程布置决策的线程调度器模块128或同类功能。可以使线程布置局限于基于全***范围电源管理策略的周期性评估而使得可用于线程调度的异构核的子集。此外,与单独线程相关联的线程策略210可以指定如果在事件优选核中可以使用的可用和/或可允许的一组核不可用的话将使用的优选的一组核。可以用各种方式来配置线程策略210以指定异构核的组合、一个或多个不同类型的核和/或在其上面允许相应线程运行的特定单独核。根据线程策略,可以对优选核给定优先级(如果指定的话),并且然后可以从更宽泛的一组可允许核(如果指定的话)选择核。下面相对于图4的示例程序来讨论关于线程策略和高频率线程布置决策的应用的附加细节。
图4是描述根据一个或多个实施方式的用于基于线程策略的线程调度的示例程序400的细节的流程图。可以经由适当地配置的计算装置(诸如经由相对于图1和图2的示例计算装置描述的线程调度器模块128和/或其它功能)来实现程序400。还可以用各种方式将相对于程序400所述的单独操作和细节与在本文中相对于图3和图5的示例程序讨论的操作和细节组合。
向单独的线程指派指定用于线程在处理***的异构核之间的分配的准则的线程策略(方框402)。例如,线程调度器模块128可以进行操作以确立、保持以及指派线程策略给线程作为遍及本文档描述的高频率(例如,逐个线程)布置决策的一部分。可以用各种方式来配置线程策略210以指定异构核的组合、一个或多个不同类型的核和/或在其上面允许相应线程运行的特定单独核。在一个或多个实施方式中,使用线程策略来生成将所允许的核映射到线程的紧凑表示,诸如通过使用位图、数据串、线程性质、映射数据库或者被配置成指示核紧密度的其它适当数据结构,所述核紧密度可以包括以逐个线程为基础的优选核、所允许的核和/或受限核的指示。
可以采用各种准则来设立和指派线程策略。例如,可以基于应用类型、优先级、活动类型、线程种类、任务大小、时间最终期限、用户可见性指示和/或适合于将线程和进程分类的参数的其它组合中的一个或多个来确立线程策略。因此,线程策略210可以被配置成控制单独线程和总体工作负荷在提供一定范围的性能能力、处理效率以及电力使用特性(如下面更详细地描述的)的一组异构核之间的分布。换言之,异构核可以包括具有不同性能、效率和/或电力使用特性的两个或更多不同类型的核。
例如,可以将线程策略确立成引起低优先级线程到电力高效核的布置,而具有时间最终期限和高优先级的线程可以用面向性能核来布置。还可以针对不同种类的应用和工作类型而指定核的不同组合。可以将线程策略确立成实现各种设计目标,其包括但不限于调谐以下项的能力,即:电力与性能之间的调度选择、在可见情形中偏向于性能以向用户证明装置能力、在用户可能未注意到性能差别的情况下使电力使用最小化、跨使得可用于调度的核的子集将工作负荷划分为可加速可能具有针对显著性能影响的潜力的线程的程度和/或通过使用具有变化特性的不同异构核的混合项并快速地在其之间切换来在典型的操作条件下提供性能与电力使用之间的平衡。
另外,线程策略可以对应于围绕着准则的组合组织的不同线程种类,上文叙述了其某些示例。例如,可以将应用启动线程、消息通知线程以及web页面下载线程布置在面向性能核上以给出一种快速的感觉。另一方面,可以将后台任务(诸如更新下载、扩展安装以及其它长时间运行线程)布置在电力高效核,因为这些任务对于用户而言可能是不那么时间敏感和/或可见的。可以使用线程策略来标识可以与单独线程一起使用的异构***的核。
在另一示例中,可以定义基于预期响应性将不同类型的线程组织成种类的交互类。作为示例,一组交互类可以包括用于可能未长到足以显著地影响性能的短暂运行线程(例如,约50至300毫秒)的即时类、用于略微较长运行(例如约300至1000毫秒)重复情形和可具有更多性能影响的具有高可见性的情形的典型类、用于可以显著地受益于性能增强的具有大量工作负荷(例如约1到10秒)的线程的响应类以及用于可以具有热约束和扩展时间帧及针对性能增益的相对低潜力且因此是被解除优先级的良好候选的长时间运行线程(例如,约10至600秒)的扩展类。然后可以由与交互类相关联的线程策略来反映用以处理不同的交互类并在异构核之间进行选择的调度策略。
如上所述,可以经由与线程相关联的策略属性来指示线程策略,诸如通过将策略属性的值设置成指示相应线程策略的不同数值。此外,策略属性被配置成指定核紧密度,诸如在可以在事件优选核不可用的情况下使用可用和/或可允许的一组核的情况下将使用的优选的一组核。
考虑其中可以建立并指示不同的线程策略以用于在具有两个类型的核的异构***上调度的说明性示例,诸如具有面向性能核202和电力高效核204的图2的示例计算装置。在本示例中,使用可以采取在“0”与“5”之间的值的如上所述的策略属性来定义六个不同的策略并与线程相关联。0的值指示针对线程未定义策略,在这种情况下可以将线程布置在任何可用核上,无论核的类型如何。1的值指示布置是基于准则的评估。在这种情况下,线程调度器模块128可以进行操作以评估优先级、核利用率、工作负荷及其它考虑因素以布置线程。1的值有效地将该决策推迟至线程调度器模块128。2的值指定将使用面向性能核202,即使当前没有一个可用。换言之,2的值指示不应使用电力高效核204。3的值指示面向性能核202是优选的,但是基于核可用性还可以使用空闲的电力高效核204。4的值指示将使用电力高效核204,即使当前没有一个可用的(例如,不使用面向性能核202)。5的值指示电力高效核204是优选的,但是基于核可用性还可以使用空闲的性能定向核202。当然,不同策略的数目和种类在不同的实施方式中可以改变。替换地,可以针对可以具有可用于调度的超过两个不同类型的核的其它异构***建立同类的策略。
查明根据周期性地应用的电源管理策略针对线程调度被选择为活动的异构核的子集(方框404)。例如,线程调度器模块128可以以任何适当的方式获得关于核状态的指示。可以用各种方式来配置核状态数据以指示在当前时间段期间可用于调度的核,诸如通过使用位图、表格、二进制串、映射数据库或其它表示来指示状态,诸如停用或未停用。核状态数据可以是基于如先前在本文中以及相对于随后的图5的示例程序讨论的全***范围电源管理的评估而生成的。例如,线程调度器模块128可以经由调用从被配置成提供关于用于异构核的核状态的指示的电源管理器模块126接收核状态数据。线程调度器模块128然后可以分析该核状态数据以确定可用于调度的异构核的子集。
线程被以逐个线程为基础且根据指派给单独线程的线程策略,分配在异构核的子集之间(方框406)。例如,线程调度器模块128可以在由电源管理策略的应用施加的约束下使用与不同线程相关联的线程策略来执行调度。特别地,线程调度器模块128被局限于使用按照方框404查明的异构核的子集的调度。调度因此可以涉及到与线程策略调解指示可用核的核状态数据,其指示用于使得每个线程导出用于每个调度事件的可用核的核紧密度。该组可用核反映了由核状态数据所指示的可用性与由线程策略所反映的核紧密度之间的交集。因此,指派给特定线程的线程策略可以用来确定用于特定线程的核紧密度,并且可以根据确定的核紧密度,用异构核中的一个异构核来布置线程。
一般地,在调度过程中遵守由核状态数据所反映的全***范围约束和由线程策略所反映的逐个线程紧密度。在一个方法中,相比于停用或活动核,可以将未停用且空闲的核确定为目标,并且可以首先选择与线程的所指派的偏好相关联的核。如果不存在空闲的优选核,则可以使用空闲可允许核来调度线程。根据线程紧密度的核布置取决于找到可用核内的适当空闲核。在不存在可用于布置的优选核或可允许核的情况下,然后可以将调度切换至基于优先级的调度以跨未停用核分配线程。基于优先级的调度可以以该组可允许核为目标和/或可以涉及到应用覆写算法来调度已忙碌处理器上的线程。
图5是描述根据一个或多个实施方式的用于选择性地控制处理***的异构核的状态的示例程序500的细节的流程图。可以经由适当地配置的计算装置(诸如经由相对于图1和图2的示例计算装置描述的电源管理器模块126和/或其它功能)来实现程序500。还可以用各种方式将相对于程序500所述的单独操作和细节与在本文中相对于图3和图4的示例程序讨论的操作和细节组合。
在一定时间段内跟踪用于具有包括电力高效核和面向性能核的异构核的处理***的多个性能度量(方框502)。然后,应用电源管理策略来基于多个性能度量的分析而选择性在后续时间段内将异构核激活和去激活(方框504)。例如,电源管理器模块126可以进行操作以跟踪指示用于处理***的操作上下文的各种性能度量作为遍及本文描述的周期性电源管理评估的一部分。可设想各种类型的组合的度量,先前讨论了其示例。电源管理模块126然后可以利用所跟踪的度量来做出相对低频率的电源管理评估并因此控制用于异构核的激活状态。这可以涉及到根据电源管理策略而引起用于电力高效核和面向性能核的核状态的变化。
向线程调度器传送核状态数据,其足以使得线程调度器能够标识在后续时间段期间可用于线程调度的异构核中的核,并在该后续时间段期间在已标识的核之间分配单独线程(方框506)。例如,电源管理器模块126可以生成指示可以以各种形式配置的停用和未停用核的核状态数据。作为示例,可以经由位图、表格、二进制串、映射数据库、核ID列表、矩阵或其它表示将用于异构核的***的核状态208传送到线程调度器模块128和/或其它组件。线程调度器模块128然后可以利用核状态数据来导出可用于调度的核的子集,如上文相对于图4的程序以及在本文中的别处所讨论的。
在一个或多个实施方式中,被用于***级电源管理的度量可以至少包括用于在所述时间段内跟踪的异构核的实用性因子和并发性因子。实用性因子是在该时间段内执行多少工作的指示,并且可以与异构核的利用率(例如,在该时间段内核被如何占用)和异构核的性能水平(例如核运行的频率)成比例。并发性因子是异构核的多个核一起运行的时间量的指示。在这种情况下,关于哪些核在后续时间段将激活和/或去激活的决定可以取决于至少核实用性和核并发性因子的组合。可以使用核实用性和核并发性因子来计算在后续时间段内将停用和解除停用的异构***的核的数目和类型。可设想被配置成以各种方式结合核实用性和核并发性因子的各种电源管理策略和相应核激活算法。
示例性核激活算法
为了进一步举例说明,考虑在一个或多个实施方式中可以采用以选择性地将核停用和解除停用的以下示例核激活算法。示例核激活算法仅仅作为一个说明性示例而提供,并且本文中所述的技术并不意图限于示例算法。
根据先前的讨论,示例核激活算法使用前一时间段的总体实用性和并发性的组合来选择用于下一时间段的核状态。总体实用性分布在活动核的推定利用率上,给定核的并行活动的直方图表示,假设该利用率被打包到最小可能数目的核上。然后针对一组阈值检查此实用性以确定在下一时间段内要停用或解除停用的核。例如,可以确立阈值以控制是增加还是减少核的总数和/或每个单独类型的核。可以针对不同类型的核独立地选择增加和减少阈值。相对于每个特定核类型,还可以针对第一核对比后续核独立地选择阈值,以允许如下这样的策略,即:其计及与将后续面向性能核解除停用相比的用以将第一面向性能核解除停用的较高成本(因为第二核可以与第一核共享公共电力资源)。同样地,可以应用用于将第三或后来的高性能核解除停用的唯一阈值。
在本上下文中,可以用以下方式来计算未停用核的计数:
核计数计算
N是***上的核的总数。
Ci是在同时地运行i个核的情况下花费的时间量,称为并行时间。
UT是在机器上实现的总实用性。
T是总经历时间:
Zk是第k个处理器的利用率,假设所有工作被打包在可以满足并行时间的分布的处理器的最小集合上。
ZT是***的总利用率(其中,1表示单个完全占用处理器):
Ui是第i核的估计实用性,假设与利用率成比例的实用性的紧密打包和分布:
将Ui与上“增加”阈值相比较(其可以以每个i的值、例如每个核单独地设定)以确定核是否应被解除停用。如果Ui其在此阈值以下,则将其与不同的下“减少”阈值相比较以确定核是否应被停用。因此,可以基于用于异构核的总实用性因子和并发性因子来计算用于一个或多个单独核的实用性。然后将用于一个或多个单独核的实用性与针对核设定的阈值相比较,以确定要将核激活还是去激活。例如,如果实用性超过上阈值,则可以将核解除停用(例如,激活)。如果实用性在下阈值以下,则可以将核停用(例如,去激活)。
在具有面向性能核和电力高效核的组合的***的情况下,可以使用前述实用性计算来确定用于面向性能核的数目和核状态。在某些实施方式中,可以使用同类的实用性计算和阈值来确定用于其它类型的核(包括电力高效核)的数目和核状态。
为了避免其中核的实用性可以被以较低频率运行的其它类型的核抵消的异常,可以使用第i个最多利用的核的实际测量实用性,如果其高于估计实用性的话。另外,为了对针对性能的需求进行快速响应,核激活算法可以被配置成在观察需求的单个循环之后增加面向性能核(或其它类型的核)的可用计数。然而,减少核的数目可能要求所观察的较轻需求的多个循环。例如,可以设定核激活算法,以在将核停用之前观察低需求的三个连续循环。可以根据可配置参数来控制用以增加和减少核计数的循环的数目。
已考虑了前述示例细节和技术,现在考虑在异构线程调度的一个或多个实施方式中可以采用的示例***和组件的讨论。
示例性***
图6图示出包括表示可以实现本文所述各种技术的一个或多个计算***和/或装置的示例计算装置602的示例计算***600。计算装置602可以是例如服务提供商的服务器、与客户端相关联的装置(例如,客户端装置)、芯片上***和/或任何其它适当的计算装置或计算***。
如所图示的示例计算装置602包括处理***604、一个或多个计算机可读介质606以及被相互通信耦合的一个或多个I/O接口608。虽然未示出,但计算装置602还可以包括***总线或其它数据和命令传输***,其将各种组件相互耦合。***总线可以包括不同总线结构中的任何一个或组合,诸如存储器总线或存储器控制器、***总线、通用串行总线和/或利用多种总线架构中的任何一个的处理器或本地总线。还可设想多种其它示例,诸如控制和数据线。
处理***604表示用以使用硬件来执行一个或多个操作的功能。因此,处理***604被图示为包括可以被配置为处理器、功能块等的硬件元件610。这可以包括用硬件的实施为专用集成电路或使用一个或多个半导体形成的其它逻辑装置。硬件元件610不受形成该元件的材料或在其中采用的处理机制的限制。例如,处理器可以由(一个或多个)半导体和/或晶体管(例如,电子集成电路(IC))构成。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
计算机可读介质606被图示为包括存储器/存储装置612。存储器/存储装置612表示与一个或多个计算机可读介质相关联的存储器/存储装置容量。存储器/存储装置612可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪速存储器、光盘、磁盘等)。存储器/存储装置612可以包括固定介质(例如,RAM、ROM、固定硬盘等)以及可移除介质(例如,闪速存储器、可移除硬驱、光盘等)。可以用多种其它方式来配置计算机可读介质606,如下面进一步描述的。
(一个或多个)输入/输出接口608表示将允许用户向计算装置602输入命令和信息并还允许使用各种输入/输出装置向用户和/或其它组件或装置呈现信息的功能。输入装置的示例包括键盘、光标控制装置(例如,鼠标)、用于语音操作的麦克风、扫描仪、触摸功能(例如,被配置成检测物理触摸的电容性或其它传感器)、照相机(例如,其可以采用诸如红外频率之类的可见光或不可见光波长来检测未涉及到作为手势的触摸的移动)等。输出装置的示例包括显示装置(例如,监视器或投影仪)、扬声器、打印机、网卡、触觉响应装置等。因此,可以用如下面进一步描述的多种方式来配置计算装置602以支持用户交互。
在本文中在软件、硬件元件或程序模块的一般上下文中描述了各种技术。一般地,这样的模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元件、组件、数据结构等。如本文所使用的术语“模块”、“功能”和“组件”一般地表示软件、固件、硬件或其组合。本文所述的技术的特征是平台无关的,这意味着可以在具有多种处理器的多个商用计算平台上实现该技术。
可以在某种形式的计算机可读介质上存储或跨某种形式的计算机可读介质发射所述模块和技术的实施方式。计算机可读介质可以包括可以被计算装置602访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“通信介质”。
“计算机可读存储介质”指的是使得能够存储信息的介质和/或装置,这与纯粹的信号传输、载波或信号本身相反。因此,计算机可读存储介质不包括信号承载介质、瞬时性信号或信号本身。计算机可读存储介质包括用适合于存储诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其它数据之类的信息的方法或技术实现的易失性和非易失性、可移除和不可移除介质和/或存储装置之类的硬件。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪速存储器或其它存储器技术、CD-ROM、数字多功能磁盘(DVD)或其它光学存储装置、硬盘、磁带盒、磁带、磁盘存储装置或其它磁性存储装置或者适合于存储期望信息且可以被计算机访问的其它存储装置、有形介质或制品。
“通信介质”可以指的是被配置成诸如经由网络向计算装置602的硬件发射指令的信号承载介质。通信介质通常可以在诸如载波、数据信号或其它传输机制之类的已调制数据信号中体现计算机可读指令、数据结构、程序模块或其它数据。通信介质还包括任何信息输送介质。术语“已调制数据信号”意指其特性中的一个或多个特性被以对信号中的信息进行编码的方式设定或改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接之类的有线介质以及诸如声学、RF、红外及其它无线介质之类的无线介质。
如前所述,硬件元件610和计算机可读介质606表示在某些实施例中可以被用来实现本文所述技术的至少某些方面的以硬件形式实现的指令、模块、可编程装置逻辑和/或固定装置逻辑。硬件元件可以包括集成电路或芯片上***、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑装置(CPLD)以及用硅或其它硬件器件的其它实施方式的组件。在本上下文中,硬件元件可以操作为执行由用硬件元件体现的指令、模块和/或逻辑定义的程序任务的处理装置以及被用来存储指令以用于执行的硬件装置,例如先前所述的计算机可读存储介质。
还可以采用前述内容的组合以实现本文所述的各种技术和模块。因此,可以将包括操作***108、应用110、电源管理器模块126、线程调度器模块128以及其它程序模块的软件、硬件或程序模块实现为在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件610体现的一个或多个指令和/或逻辑。可以将计算装置602配置成实现对应于软件和/或硬件模块的特定指令和/或功能。因此,可以例如通过使用处理***的计算机可读存储介质和/或硬件元件610至少部分地用硬件来实现作为可以被计算装置602作为软件执行的模块的模块实施方式。指令和/或功能可以是可被制品中的一个或多个制品(例如,一个或多个计算装置602和/或处理***604)执行/操作以实现本文所述的技术、模块以及示例的。
如在图6中进一步所图示,示例***600使得能够当在个人计算机(PC)、电视装置和/或移动装置上运行应用时实现普遍存在的环境以实现无缝的用户体验。当在利用应用、播放视频游戏、观看视频等的同时从一个装置过渡至下一个时,服务和应用在全部的三个环境中基本上类似地运行以实现共同的用户体验。
在示例***600中,通过中央计算装置将多个装置互连。中央计算装置可以在多个装置的本地,或者可以位于远离多个装置处。在一个实施例中,中央计算装置可以是通过网络、互联网或其它数据通信链路被连接到多个装置的一个或多个服务器计算机的云。
在一个实施例中,此互连架构使得能够跨多个装置输送功能以向多个装置的用户提供共同且无缝的体验。多个装置中的每一个可以具有不同的物理要求和能力,并且中央计算装置使用平台来使得能够向装置输送定制于该装置且为所有装置所共有的体验。在一个实施例中,创建一类目标装置并使体验定制于该装置的一般类别。可以由装置的物理特征、使用类型或其它共有特性来定义一类装置。
在各种实施方式中,计算装置602可以采取多种不同配置,诸如用于计算机616、移动装置618以及电视620用途。这些配置中的每一个包括可以具有大体上不同的构造和能力的装置,并且因此可以根据不同装置类别中的一个或多个类别来配置计算装置602。例如,可以将计算装置602实现为包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等装置的计算机614类别。
还可以将计算装置602实现为移动616类别的装置,包括移动装置,诸如移动电话、便携式音乐播放器、便携式游戏装置、平板计算机、多屏幕计算机等。还可以将计算装置602实现为电视618类别的装置,其包括在偶然观看环境中具有或被连接到一般地较大屏幕的装置。这些装置包括电视、机顶盒、游戏控制台等。
本文所述的技术可以被计算装置602的这些各种配置支持,并且不限于本文所述的技术的特定示例。这通过在计算装置602上包括电源管理器模块126和线程调度器模块128来举例说明。电源管理器模块126、线程调度器模块128及其它模块/应用所表示的功能还可以全部或部分地通过使用分布式***来实现,诸如如下所述地经由平台622而在“云”620上。
云620包括和/或表示用于资源624的平台622。平台622将云620的硬件(例如,服务器)和软件资源的底层功能抽象化。资源624可以包括可以在计算机处理在远离计算装置602的服务器上被执行的同时被利用的应用和/或数据。资源624还可以包括在互联网上和/或通过诸如蜂窝式或Wi-Fi网络之类的订户网提供的服务。
平台622可以将资源和功能抽象化以将计算装置602与其它计算装置相连。平台622还可以用于将资源的缩放抽象化以针对遇到的对经由平台622实现的资源626的需求提供相应的规模水平。因此,在互连装置实施例中,本文所述的功能的实现可以遍布于***600。例如,可以部分地在计算装置602上以及经由将云622的功能抽象化的平台622来实现该功能。
示例实施方式
本文中所述的异构线程调度技术的示例实施方式包括但不限于以下示例中的一个或多个中的一个或任何组合:
一种由计算装置实现的方法,包括:向单独线程指派线程策略,该线程策略指定用于在处理***的异构核之间分配线程的准则;根据周期性地应用的电源管理策略来查明针对线程调度被选择为活动的异构核的子集;以及在异构核的子集之间且根据指派给单独线程的线程策略以逐个线程为基础分配线程。
如上所述的方法,其中,所述异构核包括至少面向性能核和电力高效核,面向性能核被配置成相对于电力高效核而言减少用于完成特定任务的处理时间,并且电力高效核被配置成相对于面向性能核而言消耗用于完成特定任务的较少功率。
如上所述的方法,其中,用于线程分配的准则包括以下的一项或多项:应用类型、优先级、活动类型、线程种类、任务大小或时间最终期限。
如上所述的方法,其中,查明异构核的子集包括获得核状态数据,其基于电源管理策略的应用而生成而且被配置成指示在当前时间段期间可用于调度的核。
如上所述的方法,其中,分配线程包括:基于指派给特定线程的线程策略而生成用于特定线程的优选的一组核和可允许的一组核;如果所述优选的一组核中的至少一个在所述子集中且可用于调度,则将线程布置在所述优选的一组核中的核上;或者如果所述优选的一组核中的至少一个不可用且所述可允许的一组核中的至少一个在所述子集中且可用于调度,则将线程布置在所述可允许的一组核中的核上。
如上所述的方法,其中,指派线程策略还包括将用于单独线程的策略属性的值设置成不同的数值,以便以逐个线程为基础指示优选核、所允许的核或受限核中的至少一个。
如上所述的方法,其中,所述线程策略被配置成计及异构核的不对称性质。
如上所述的方法,其中,所述处理***的异构核包括多于两个不同类型的核。
一种由计算装置实现的方法,包括:在一定时间段内跟踪用于具有包括电力高效核和面向性能核的异构核的处理***的多个性能度量;应用电源管理策略,以基于多个性能和***状态度量的分析而在后续时间段内选择性地将异构核激活和去激活;以及向线程调度器传送核状态数据,其足以使得线程调度器能够标识在后续时间段期间可用于线程调度的异构核中的核,并在该后续时间段期间在已标识的核之间分配单独线程。
如上所述的方法,其中,应用电源管理策略包括:引起用于电力高效核和面向性能核的核状态的变化;以及生成被配置成向其它组件传送核状态的核状态数据。
如上所述的方法,其中,所述性能度量至少包括在所述时间段内测量的用于异构核的实用性因子和并发性因子。
如上所述的方法,还包括基于性能度量的分析来识别用于计算装置的操作上下文,该操作上下文指示以下的一项或者多项的组合:总体工作负荷、核之间的工作负荷分布、热条件、用户存在的指示、电源可用性、应用类型、工作种类或优先级设置。
如上所述的方法,其中,所述电源管理策略被配置成在由多个性能度量的跟踪所指示的不同操作上下文中定义异构核中的哪些核被停用和未停用。
如上所述的方法,其中,应用电源管理策略来选择性地将异构核激活和去激活包括:基于用于异构核的实用性因子和并发性因子来计算用于一个或多个单独核的实用性;将针对一个或多个单独核计算的实用性与针对核设定的阈值相比较以确定是要将核激活还是去激活。
如上所述的方法,其中,处理***的异构核提供一定范围的不同性能能力、处理效率以及电力使用特性。
一种计算装置,包括:处理***,其具有包括至少电力高效核和面向性能核的异构核;以及操作***,其包括一个或多个模块,所述模块可经由处理***操作以执行用于经由异构核来管理处理工作负荷的性能的操作,包括:周期性地分析用于处理***的操作上下文;基于周期性分析来设定用于异构核中的至少某些异构核的核状态,以控制电力高效核和面向性能核的激活以用于线程调度;以及根据基于周期性分析设定的核状态来调度单独线程,以基于每个线程在异构核的活动核之间分配单独线程。
如上所述的计算装置,其中,调度以大于所述周期性分析的频率发生。
如上所述的计算装置,其中,所述一个或多个模块包括:电源管理器模块,其被配置成执行核状态的周期性分析和设定;以及线程调度器模块,其被配置成根据核状态来执行调度。
如上所述的计算装置,其中,周期性地分析操作上下文包括跟踪工作负荷、热条件、用户存在的指示以及电源可用性。
如上所述的计算装置,其中,单独线程的调度包括针对每个特定线程:使用指派给所述特定线程的线程策略来确定用于该特定线程的核紧密度;以及根据确定的核紧密度来用异构核中的一个异构核布置所述特定线程。
结论
虽然已经用结构特征和/或方法动作特定的语言描述了本主题,但将理解的是在所附权利要求中定义的主题不一定局限于上文所述的特定特征或动作。相反地,上文所述的特定特征和动作是作为实现权利要求的示例形式而公开的。
Claims (20)
1.一种由计算装置实现的方法,包括:
向单独线程指派线程策略,所述线程策略指定用于在处理***的异构核之间分配线程的准则;
根据周期性地应用的电源管理策略,查明针对线程调度被选择为活动的所述异构核的子集;以及
在所述异构核的所述子集之间且根据指派给所述单独线程的所述线程策略,以逐个线程为基础分配线程。
2.根据权利要求1所述的方法,其中,所述异构核包括至少面向性能核和电力高效核,所述面向性能核被配置成相对于所述电力高效核而言减少用于完成特定任务的处理时间,并且所述电力高效核被配置成相对于所述面向性能核而言消耗较少功率用于完成特定任务。
3.根据权利要求1所述的方法,其中,用于线程分配的准则包括以下的一项或者多项:应用类型、优先级、活动类型、线程种类、任务大小或时间最终期限。
4.根据权利要求1所述的方法,其中,查明所述异构核的所述子集包括获得核状态数据,其基于所述电源管理策略的应用而生成而且被配置成指示在当前时间段期间可用于调度的核。
5.根据权利要求1所述的方法,其中,分配线程包括:
基于指派给特定线程的所述线程策略,生成用于所述特定线程的优选的一组核和可允许的一组核;
如果所述优选的一组核中的至少一个核在所述子集中且可用于调度,则将线程布置在所述优选的一组核中的核上;或者
如果所述优选的一组核中的至少一个核不可用且所述可允许的一组核中的至少一个核在所述子集中且可用于调度,则将线程布置在所述可允许的一组核中的核上。
6.根据权利要求1所述的方法,其中,指派线程策略还包括将用于单独线程的策略属性的值设置成不同的数值,以便以逐个线程为基础指示优选核、所允许的核或受限核中的至少一个。
7.根据权利要求1所述的方法,其中,所述线程策略被配置成计及异构核的不对称性质。
8.根据权利要求1所述的方法,其中,所述处理***的所述异构核包括多于两个不同类型的核。
9.一种由计算装置实现的方法,包括:
在一定时间段内跟踪用于具有包括电力高效核和面向性能核的异构核的处理***的多个性能度量;
应用电源管理策略,以基于所述多个性能和***状态度量的分析而在后续时间段内选择性地将所述异构核激活和去激活;以及
向线程调度器传送核状态数据,其足以使得所述线程调度器能够标识在所述后续时间段期间可用于所述线程调度的所述异构核中的核,并在所述后续时间段期间在已标识的所述核之间分配单独线程。
10.根据权利要求9所述的方法,其中,应用所述电源管理策略包括:
引起用于所述电力高效核和所述面向性能核的核状态的变化;以及
生成被配置成向其它组件传送所述核状态的核状态数据。
11.根据权利要求9所述的方法,其中,所述性能度量至少包括在所述时间段内测量的用于所述异构核的实用性因子和并发性因子。
12.根据权利要求9所述的方法,还包括基于所述性能度量的所述分析来识别用于所述计算装置的操作上下文,所述操作上下文指示以下的一项或多项的组合:总体工作负荷、核之间的工作负荷分布、热条件、用户存在的指示、电源可用性、应用类型、工作种类或优先级设置。
13.根据权利要求9所述的方法,其中,所述电源管理策略被配置成在由多个性能度量的跟踪所指示的不同操作上下文中定义所述异构核中的哪些核被停用和未停用。
14.根据权利要求9所述的方法,其中,应用所述电源管理策略来选择性地将所述异构核激活和去激活包括:
基于用于所述异构核的实用性因子和并发性因子来计算用于一个或多个单独核的实用性;
将针对所述一个或多个单独核计算的所述实用性与针对所述核设定的阈值相比较,以确定是要将所述核激活还是去激活。
15.根据权利要求9所述的方法,其中,所述处理***的所述异构核提供一定范围的不同性能能力、处理效率以及电力使用特性。
16.一种计算装置,包括:
处理***,其具有包括至少电力高效核和面向性能核的异构核;以及
操作***,其包括一个或多个模块,所述模块经由所述处理***可操作以执行用于经由所述异构核来管理处理工作负荷的性能的操作,包括:
周期性地分析用于所述处理***的操作上下文;
基于周期性分析来设定用于所述异构核中的至少某些异构核的核状态,以控制所述电力高效核和所述面向性能核的激活以用于线程调度;以及
根据基于所述周期性分析设定的所述核状态来调度单独线程,以基于每个线程在所述异构核的活动核之间分配所述单独线程。
17.根据权利要求16所述的计算装置,其中,调度以大于所述周期性分析的频率发生。
18.根据权利要求16所述的计算装置,其中,所述一个或多个模块包括:
电源管理器模块,其被配置成执行核状态的周期性分析和设定;以及
线程调度器模块,其被配置成根据所述核状态来执行调度。
19.根据权利要求16所述的计算装置,其中,周期性地分析所述操作上下文包括跟踪工作负荷、热条件、用户存在的指示以及电源可用性。
20.根据权利要求16所述的计算装置,其中,所述单独线程的调度包括针对每个特定线程:
使用指派给所述特定线程的线程策略来确定用于所述特定线程的核紧密度;以及
根据确定的核紧密度来用所述异构核中的一个异构核布置所述特定线程。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/498599 | 2014-09-26 | ||
US14/498,599 US9424092B2 (en) | 2014-09-26 | 2014-09-26 | Heterogeneous thread scheduling |
PCT/US2015/051566 WO2016049095A1 (en) | 2014-09-26 | 2015-09-23 | Heterogeneous thread scheduling |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106716365A CN106716365A (zh) | 2017-05-24 |
CN106716365B true CN106716365B (zh) | 2020-07-21 |
Family
ID=54337349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580051981.5A Active CN106716365B (zh) | 2014-09-26 | 2015-09-23 | 异构线程调度 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9424092B2 (zh) |
EP (1) | EP3198429B1 (zh) |
KR (1) | KR102427067B1 (zh) |
CN (1) | CN106716365B (zh) |
ES (1) | ES2836353T3 (zh) |
WO (1) | WO2016049095A1 (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2015015756A1 (ja) * | 2013-08-02 | 2017-03-02 | 日本電気株式会社 | 不揮発性メモリ搭載サーバの省電力制御システム、制御装置、制御方法および制御プログラム |
WO2016195274A1 (en) * | 2015-06-01 | 2016-12-08 | Samsung Electronics Co., Ltd. | Method for scheduling entity in multi-core processor system |
US9954885B2 (en) * | 2015-06-01 | 2018-04-24 | Shanghai Redneurons Co., Ltd. | Software/hardware device with uncertain service function and structural characterization, and scheduling method thereof |
US9952871B2 (en) * | 2015-06-05 | 2018-04-24 | Arm Limited | Controlling execution of instructions for a processing pipeline having first out-of order execution circuitry and second execution circuitry |
US10007733B1 (en) * | 2015-06-09 | 2018-06-26 | EMC IP Holding Company LLC | High-performance network data capture and storage |
US9891926B2 (en) | 2015-09-30 | 2018-02-13 | International Business Machines Corporation | Heterogeneous core microarchitecture |
KR102464678B1 (ko) * | 2016-03-18 | 2022-11-11 | 한국전자통신연구원 | 매니코어 시스템에서 쓰레드를 스케줄링 하는 방법 및 그 장치 |
US10296074B2 (en) * | 2016-08-12 | 2019-05-21 | Qualcomm Incorporated | Fine-grained power optimization for heterogeneous parallel constructs |
US10379904B2 (en) * | 2016-08-31 | 2019-08-13 | Intel Corporation | Controlling a performance state of a processor using a combination of package and thread hint information |
US10503238B2 (en) | 2016-11-01 | 2019-12-10 | Microsoft Technology Licensing, Llc | Thread importance based processor core parking and frequency selection |
US10372494B2 (en) | 2016-11-04 | 2019-08-06 | Microsoft Technology Licensing, Llc | Thread importance based processor core partitioning |
US10540300B2 (en) * | 2017-02-16 | 2020-01-21 | Qualcomm Incorporated | Optimizing network driver performance and power consumption in multi-core processor-based systems |
US10372495B2 (en) | 2017-02-17 | 2019-08-06 | Qualcomm Incorporated | Circuits and methods providing thread assignment for a multi-core processor |
US10459517B2 (en) * | 2017-03-31 | 2019-10-29 | Qualcomm Incorporated | System and methods for scheduling software tasks based on central processing unit power characteristics |
US10521271B2 (en) | 2017-04-01 | 2019-12-31 | Intel Corporation | Hybrid low power homogenous grapics processing units |
US10639550B2 (en) * | 2017-04-18 | 2020-05-05 | Bullguard Ltd | System and method for dynamically allocating resources to a game process |
US10235178B2 (en) | 2017-06-02 | 2019-03-19 | Microsoft Technology Licensing, Llc | Performance scaling for binary translation |
US10474600B2 (en) | 2017-09-14 | 2019-11-12 | Samsung Electronics Co., Ltd. | Heterogeneous accelerator for highly efficient learning systems |
KR102452205B1 (ko) | 2017-11-20 | 2022-10-06 | 삼성전자주식회사 | 멀티 코어 제어 시스템 |
US10700954B2 (en) * | 2017-12-20 | 2020-06-30 | Advanced Micro Devices, Inc. | Scheduling memory bandwidth based on quality of service floorbackground |
CN111542808B (zh) * | 2017-12-26 | 2024-03-22 | 三星电子株式会社 | 预测电子设备上运行应用的线程的最优数量的方法和*** |
KR102022972B1 (ko) * | 2018-03-09 | 2019-09-19 | 울산과학기술원 | 이종 멀티 프로세싱 시스템 환경 기반 런타임 관리장치 및 방법 |
US10817341B1 (en) * | 2019-04-10 | 2020-10-27 | EMC IP Holding Company LLC | Adaptive tuning of thread weight based on prior activity of a thread |
US11698812B2 (en) | 2019-08-29 | 2023-07-11 | Intel Corporation | System, apparatus and method for providing hardware state feedback to an operating system in a heterogeneous processor |
US11144443B2 (en) | 2019-09-09 | 2021-10-12 | Microsoft Technology Licensing, Llc | Optimization of workloads based on constraints |
KR20210101071A (ko) * | 2020-02-07 | 2021-08-18 | 삼성전자주식회사 | 이종의 다중-프로세서에 기반하여 스케줄링을 수행하기 위한 전자 장치 및 그의 동작 방법 |
US20220197367A1 (en) * | 2020-12-18 | 2022-06-23 | Intel Corporation | Hardware and software coordinated cost-aware low power state selection |
US20210149736A1 (en) * | 2020-12-23 | 2021-05-20 | Intel Corporation | Methods, systems, apparatus, and articles of manufacture to extend the life of embedded processors |
US20210224128A1 (en) * | 2020-12-24 | 2021-07-22 | Intel Corporation | Technologies for managing workloads in processor cores |
US20230018828A1 (en) * | 2021-07-13 | 2023-01-19 | Intel Corporation | Device, method and system to provide thread scheduling hints to a software process |
US20230067109A1 (en) * | 2021-08-30 | 2023-03-02 | Apple Inc. | Performance islands for cpu clusters |
CN113608882B (zh) * | 2021-10-11 | 2022-01-28 | 广州紫麦科技股份有限公司 | 基于人工智能和大数据的信息处理方法、***及云平台 |
US11966789B2 (en) * | 2022-04-27 | 2024-04-23 | Uab 360 It | System and method for queuing node load for malware analysis |
CN115016948B (zh) * | 2022-08-08 | 2022-11-25 | 阿里巴巴(中国)有限公司 | 一种资源访问方法、装置、电子设备及可读存储介质 |
WO2024107188A1 (en) * | 2022-11-17 | 2024-05-23 | Siemens Aktiengesellschaft | Multi-core processing with software-based scheduler and planner |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7093147B2 (en) | 2003-04-25 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Dynamically selecting processor cores for overall power efficiency |
US8739162B2 (en) | 2007-04-27 | 2014-05-27 | Hewlett-Packard Development Company, L.P. | Accurate measurement of multithreaded processor core utilization and logical processor utilization |
US8490103B1 (en) | 2007-04-30 | 2013-07-16 | Hewlett-Packard Development Company, L.P. | Allocating computer processes to processor cores as a function of process utilizations |
US8615647B2 (en) | 2008-02-29 | 2013-12-24 | Intel Corporation | Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state |
US8010822B2 (en) | 2008-03-28 | 2011-08-30 | Microsoft Corporation | Power-aware thread scheduling and dynamic use of processors |
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 |
US8250395B2 (en) * | 2009-11-12 | 2012-08-21 | International Business Machines Corporation | Dynamic voltage and frequency scaling (DVFS) control for simultaneous multi-threading (SMT) processors |
EP2519876A1 (en) * | 2009-12-28 | 2012-11-07 | Hyperion Core, Inc. | Optimisation of loops and data flow sections |
US8689021B1 (en) | 2010-09-10 | 2014-04-01 | Marvell International Ltd. | System and method for selecting a power management configuration in a multi-core environment according to various operating conditions such as voltage, frequency, power mode, and utilization factor varied on a per-core basis |
US20120284729A1 (en) | 2011-05-03 | 2012-11-08 | Microsoft Corporation | Processor state-based thread scheduling |
US8793686B2 (en) | 2011-06-08 | 2014-07-29 | Microsoft Corporation | Operating system decoupled heterogeneous computing |
US9442773B2 (en) | 2011-11-21 | 2016-09-13 | Qualcomm Incorporated | Thermally driven workload scheduling in a heterogeneous multi-processor system on a chip |
US9727388B2 (en) | 2011-12-29 | 2017-08-08 | Intel Corporation | Migrating threads between asymmetric cores in a multiple core processor |
WO2013162589A1 (en) | 2012-04-27 | 2013-10-31 | Intel Corporation | Migrating tasks between asymmetric computing elements of a multi-core processor |
WO2013169249A1 (en) | 2012-05-09 | 2013-11-14 | Intel Corporation | Scheduling tasks among processor cores |
US9619282B2 (en) | 2012-08-21 | 2017-04-11 | Lenovo (Singapore) Pte. Ltd. | Task scheduling in big and little cores |
US9329900B2 (en) | 2012-12-28 | 2016-05-03 | Intel Corporation | Hetergeneous processor apparatus and method |
US9672046B2 (en) | 2012-12-28 | 2017-06-06 | Intel Corporation | Apparatus and method for intelligently powering heterogeneous processor components |
-
2014
- 2014-09-26 US US14/498,599 patent/US9424092B2/en active Active
-
2015
- 2015-09-23 CN CN201580051981.5A patent/CN106716365B/zh active Active
- 2015-09-23 ES ES15782115T patent/ES2836353T3/es active Active
- 2015-09-23 WO PCT/US2015/051566 patent/WO2016049095A1/en active Application Filing
- 2015-09-23 EP EP15782115.8A patent/EP3198429B1/en active Active
- 2015-09-23 KR KR1020177010894A patent/KR102427067B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
EP3198429B1 (en) | 2020-11-11 |
CN106716365A (zh) | 2017-05-24 |
ES2836353T3 (es) | 2021-06-24 |
KR20170062493A (ko) | 2017-06-07 |
US20160092274A1 (en) | 2016-03-31 |
US9424092B2 (en) | 2016-08-23 |
EP3198429A1 (en) | 2017-08-02 |
WO2016049095A1 (en) | 2016-03-31 |
KR102427067B1 (ko) | 2022-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106716365B (zh) | 异构线程调度 | |
CN107534189B (zh) | 具有多个电池的设备中的电池管理 | |
EP3259825B1 (en) | Heterogeneous battery cell switching | |
Tsai et al. | A hyper-heuristic scheduling algorithm for cloud | |
EP3259824A1 (en) | Heterogeneous battery cell charging | |
US8904399B2 (en) | System and method of executing threads at a processor | |
US10198059B2 (en) | Adaptive doze to hibernate | |
US9939862B2 (en) | Latency-based energy storage device selection | |
US20180136708A1 (en) | Dynamic Energy Storage Device Charging | |
US20180136709A1 (en) | Dynamic External Power Resource Selection | |
EP3542243B1 (en) | Dynamic energy storage device discharging | |
KR102052964B1 (ko) | 컴퓨팅 스케줄링 방법 및 시스템 | |
US20150301858A1 (en) | Multiprocessors systems and processes scheduling methods thereof | |
CN113495780A (zh) | 任务调度方法、装置、存储介质及电子设备 | |
Maruf et al. | Extending resources for avoiding overloads of mixed‐criticality tasks in cyber‐physical systems | |
Haque et al. | A priority-based process scheduling algorithm in cloud computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |