CN109906421A - 基于线程重要性的处理器核划分 - Google Patents
基于线程重要性的处理器核划分 Download PDFInfo
- Publication number
- CN109906421A CN109906421A CN201780068016.8A CN201780068016A CN109906421A CN 109906421 A CN109906421 A CN 109906421A CN 201780068016 A CN201780068016 A CN 201780068016A CN 109906421 A CN109906421 A CN 109906421A
- Authority
- CN
- China
- Prior art keywords
- group
- core
- thread
- processor core
- importance information
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 75
- 238000012545 processing Methods 0.000 claims description 38
- 230000004044 response Effects 0.000 claims description 27
- 230000008859 change Effects 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 42
- 238000005516 engineering process Methods 0.000 description 27
- 239000002609 medium Substances 0.000 description 21
- 230000006870 function Effects 0.000 description 16
- 230000015654 memory Effects 0.000 description 15
- BQCADISMDOOEFD-UHFFFAOYSA-N Silver Chemical compound [Ag] BQCADISMDOOEFD-UHFFFAOYSA-N 0.000 description 8
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- BASFCYQUMIYNBI-UHFFFAOYSA-N platinum Chemical group [Pt] BASFCYQUMIYNBI-UHFFFAOYSA-N 0.000 description 4
- 229910052709 silver Inorganic materials 0.000 description 4
- 239000004332 silver Substances 0.000 description 4
- 230000000712 assembly Effects 0.000 description 3
- 238000000429 assembly Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 229910052737 gold Inorganic materials 0.000 description 2
- 239000010931 gold Substances 0.000 description 2
- 229910052697 platinum Inorganic materials 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000994 depressogenic effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000012120 mounting media Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- 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/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/5038—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 the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Power Sources (AREA)
Abstract
设备中的每个处理器核支持各种不同的频率范围和/或能量性能偏好,并且可以操作以在这些不同频率范围和/或能量性能偏好中的任何一个运行线程。处理器核被划分为不同的组,每个组在不同的频率范围和/或能量性能偏好运行。设备中的线程被分配多个重要性级别中的一个并且基于线程的重要性级别被调度为在特定组中的处理器核上运行。较低重要性级别线程被调度为在更功率效率的组中运行,并且更高重要性级别线程被调度在更高性能的组中运行。处理器核作为其一部分的组可以在设备操作期间基于设备和/或在设备上运行的应用的需要而改变。
Description
背景技术
随着计算技术的进步,计算机在我们的生活中变得越来越普遍。很多计算设备被设计为使用电池供电,诸如移动电话、平板计算机等。具有计算设备的这样的移动性增加了它们的可用性,但是并非没有问题。一个这样的问题是,由这些计算设备提供的各种功能消耗大量功率。这导致电池耗尽,使得用户无法使用计算设备直到计算设备被再充电。这可能导致用户无法以他们想要的方式使用他们的设备,并且用户对他们的设备感到沮丧。
发明内容
提供本“发明内容”是为了以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“发明内容”不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
根据一个或多个方面,将设备中的第一组一个或多个处理器核配置为在第一频率范围运行。将设备中的第二组一个或多个处理器核配置为在第二频率范围运行,第二频率范围包括低于第一频率范围内的频率的频率。确定被调度为在设备上执行的第一线程的重要性级别,重要性级别是多个不同的重要性级别之一。基于第一线程的重要性级别来确定第一线程要在第一组一个或多个处理器核还是第二组一个或多个处理器核上执行。调度第一线程以在所确定的一组一个或多个处理器核上执行。
根据一个或多个方面,将第一组多个处理器核配置为根据第一能量性能偏好运行,第一组处理器核中的每个处理器核与第一重要性级别相关联。将第二组多个处理器核配置为根据第二能量性能偏好运行,第二组处理器核中的每个处理器核与第二重要性级别相关联,与第二能量性能偏好相比,第一能量性能偏好指示在频率增加时更积极。确定被调度为在计算设备上执行的第一线程的重要性级别,以及调度第一线程以在第一组多个处理器核或第二组多个处理器核中的关联于与第一线程相同的重要性级别的一组多个处理器核上执行。
附图说明
参考附图描述详细描述。在附图中,附图标记的最左边的数字标识首次出现附图标记的图。在说明书和附图中的不同实例中使用相同的附图标记可以指示相似或相同的项目。附图中表示的实体可以指示一个或多个实体,并且因此可以在讨论中将单数或复数形式的实体可互换地引用。
图1是示出根据一个或多个实施例的实现基于线程重要性的处理器核划分的示例计算设备的框图。
图2是示出根据一个或多个实施例的用于确定与线程的不同重要性级别相关联的不同频率范围的示例过程的流程图。
图3示出了根据一个或多个实施例的处理器核的性能的示例图。
图4是示出根据一个或多个实施例的用于实现本文中讨论的技术的示例过程的流程图。
图5是示出根据一个或多个实施例的用于实现本文中讨论的技术的另一示例过程的流程图。
图6示出了包括表示可以实现本文中描述的各种技术的一个或多个系统和/或设备的示例计算设备的示例系统。
具体实施方式
本文中讨论基于线程重要性的处理器核划分。计算设备包括一个或多个处理器,并且每个处理器包括一个或多个处理器核(本文中也简称为核)。各种程序作为一个或多个进程在计算设备上运行,每个进程包括一个或多个线程。每个处理器核支持各种不同的频率范围,也称为p状态,并且可以操作以在这些不同频率范围内的任何一个来运行线程。处理器核的效率在不同的频率范围发生变化,并且通常不是线性的。例如,由处理器完成的工作量与处理器核的频率近似线性地增加,但是执行该工作量所消耗的功率量可以以更快的速率(例如,指数地)增加。
计算设备中的线程被分配多个重要性级别之一。可以存在两个重要性级别(例如,重要的和不重要的),或者替代地,可以存在任何数目的重要性级别。线程的重要性级别可以基于各种不同的因素来确定,诸如线程是否属于前台进程或其后代,线程是否拥有前台或可见窗口,线程是否涉及音频回放等。
计算设备中的处理器核被划分为多个组,诸如与多个重要性级别中的每个相对应的一个组。在一个或多个实施例中,每组处理器核被配置为在特定频率范围运行,并且基于线程重要性,线程被调度以在各组处理器核之一中的处理器核上执行。例如,一组处理器核可以被称为“银”组,并且银组中的每个处理器核可以被配置为在处理器核的最有效(或在阈值量内(诸如5%)是最有效的)的频率范围运行。处理器核的最有效频率范围是指处理器核具有最大或最高每瓦特性能(单位功率)的一个或多个频率。另一组处理器核可以被称为“金”组,并且金组中的每个处理器核可以被配置为在比银组中的处理器核高的频率范围运行。金组的较高频率范围允许由金组中的处理器核执行的线程比由银组中的处理器核执行的线执行得更快,但是与银组中的处理器核运行的频率范围相比,也在效率较低的性能水平(例如,每瓦特完成较少的工作并且因此每单位工作的能量使用更高)。具有不重要的重要性级别的线程可以由银组处理器核执行,并且具有重要的重要性级别的线程可以由金组处理器核执行。
另外地或替代地,每组处理器核配置有特定能量性能偏好(EPP)值。能量性能偏好值指示处理器核在执行线程时根据偏好更高性能或更低能量使用的特定能量性能偏好来运行。例如,一组处理器核可以被称为“银”组,并且银组中的每个处理器核可以被配置为根据指示偏好处理器核的较低能量使用的能量性能偏好来运行。另一组处理器核可以被称为“金”组,并且金组中的每个处理器核可以被配置为根据指示与银组中的处理器核相比偏好更高性能(和更高能量使用)的能量性能偏好来运行。具有不重要的重要性级别的线程可以由银组处理器核执行,并且具有重要的重要性级别的线程可以由金组处理器核执行。
哪组处理器核中包括哪些处理器核在计算设备的操作期间动态地确定。每个处理器核可以根据计算设备的需要而在组之间切换。因此,与其中基于其物理特性(例如,处理器核架构)静态地分组不同组的处理器核的系统相比,本文中讨论的技术允许处理器核的分组在计算设备操作时动态地改变。这允许计算设备随时间基于计算设备或在计算设备上运行的应用的需要来划分处理器核,诸如当执行大量重要线程时具有更多金处理器核但更少银处理器核,而当执行少量重要线程时具有更多银处理器核但更少金处理器核。
使用本文中讨论的技术,当重要性级别小于特定重要性级别的线程(例如,具有不重要的重要性级别的线程)在计算设备上运行时,降低计算设备的功耗。重要性级别小于特定重要性级别的线程可以被分配给在与处理器核能够运行线程的频率范围相比更慢(但是更有效)的频率范围和/或根据偏好较低能量使用的能量性能偏好进行运行的一组处理器核。因此,重要性级别小于特定重要性级别的线程仍然可以执行,但是没有花费附加的功率来以更快的速率执行这些线程。
图1是示出根据一个或多个实施例的实现基于线程重要性的处理器核划分的示例计算设备100的框图。计算设备100可以是各种不同类型的设备,诸如台式计算机、服务器计算机、膝上型计算机或上网本计算机、移动设备(例如,平板计算机或平板设备、蜂窝或其他无线电话(例如,智能手机)、记事本计算机、移动台)、可穿戴设备(例如,眼镜、头戴式显示器、手表、手镯、虚拟现实(VR)设备、增强现实(AR)设备)、娱乐设备(例如,娱乐器件、通信地耦合到显示设备的机顶盒、游戏控制台)、物联网(IoT)设备(例如,具有软件、固件和/或硬件以允许与其他设备通信的对象或物品)、电视或其他显示设备、汽车计算机等。因此,计算设备100的范围可以从具有大量存储器和处理器资源的完全资源设备(例如,个人计算机、游戏控制台)到具有有限存储器和/或处理资源的低资源设备(例如,传统的机顶盒、手持游戏机)。
计算设备100包括一个或多个处理器核102、操作系统104、一个或多个应用106、以及一个或多个输入/输出(I/O)组件108。处理器核102可以被包括作为单个处理器(例如,多核处理器)芯片的一部分和/或作为单独的处理器芯片的一部分。在一个或多个实施例中,处理器核102是一组同质处理器核102。一组同质处理器核具有相同的物理特性,诸如相同的架构、相同的性能频率范围、相同的功率效率指数等。替代地,处理器核102可以包括具有不同物理特性的处理器核。
I/O组件108包括被配置为从计算设备100输出数据或指令和/或接收用于计算设备100的数据或指令的各种组件或模块。I/O组件包括例如通信组件(例如,所支持的无线和/或有线通信)、用户输出组件(例如,显示组件)、用户输入组件(例如,键盘)等。
操作系统104管理应用106的执行。应用106可以是各种不同类型的应用中的任何一种,诸如生产力应用、游戏或娱乐应用、实用程序应用等。操作系统104本身也可以由多个程序组成,并且操作系统104也管理这些模块或程序的执行。
应用106和操作系统104作为一个或多个进程112在计算设备100上执行。每个进程112是应用106或操作系统104的一部分(例如,模块)的实例化。每个进程112通常包括更多线程114。但是,在某些情况下,进程112不包括多个线程114,在这种情况下,该进程可以被视为单线程进程。
操作系统104通过调度应用106的线程114的执行来管理应用106的执行。操作系统104还调度操作系统104的程序的线程114的执行。调度线程以执行是指通知处理器核102执行线程的指令。
每个处理器核102操作以在特定频率范围处或在特定频率范围内运行线程114。处理器核102具有其可以运行的相关联的最大频率,但是在一个或多个实施例中,还可配置为在特定频率或在由在计算设备100上运行的程序指定的特定频率范围内运行。在一个或多个实施例中,处理器核102具有两个寄存器,这两个寄存器可以由在计算设备100上运行的程序(例如,操作系统104的模块)写入,以设置指定处理器核102要在其内运行的频率范围的上限和下限频率。处理器核102继续在该指定的频率范围内操作以执行线程。另外地或替代地,处理器102可以具有单个寄存器,该单个寄存器由在计算设备100上运行的程序写入以指定处理器核102要以其运行的频率。处理器核102继续以该指定频率(或在基于指定频率范围而确定的频率范围内,诸如指定频率范围加上或减去5%)操作。
另外地或替代地,每个处理器核102可以配置有能量性能偏好(EPP)。能量性能偏好向处理器指示在执行线程时是偏好高性能还是低能量使用。例如,在从0到100的EPP等级上,EPP值0表示“最高性能”,并且EPP值100表示“最低能量”。处理器核102包含用于基于利用率来调节频率本身的内部逻辑。响应于处理器核102的利用率的增加,较低的EPP值将使处理器核102在频率增加时更积极,反之亦然。另外地或替代地,例如,内部处理器核102逻辑可以确定如果EPP大于某个特定值,则处理器核102将不会将频率提升到某个点以上。在一个或多个实施例中,处理器核102具有可以由在计算设备100上运行的程序(例如,操作系统104的模块)写入以根据处理器核102将运行的程序来设置能量性能偏好的寄存器。
操作系统104包括调度器120和基于线程重要性的核配置系统122。调度器120确定哪些线程114在哪些时间调度以由哪些处理器核102执行。调度器120可以基于各种公共和/或专有技术以各种不同方式来做出这些调度决策,诸如基于由操作系统104分配给线程的优先级,基于每个线程已经被调度了多少执行时间,等等。调度器120还至少部分基于线程的重要性级别来做出这些调度决策,如下面更详细地讨论的。
基于线程重要性的核配置系统122结合调度器120确定在计算设备100上运行的每个线程114的重要性级别(也称为每个线程的重要性),并且基于所确定的重要性级别来配置处理器核102。基于线程重要性的核配置系统122包括核配置模块132,并且调度器120包括线程重要性确定模块134和核划分模块136。线程重要性确定模块134使用各种不同的规则或标准来确定每个线程114的重要性级别,如下面更详细地讨论的。核配置模块132基于处理器核102被划分到的组来确定处理器核102的频率范围,并且向该处理器核102提供配置信息使得处理器核102能够在所确定的频率范围运行。另外地或替代地,核配置模块132可以基于处理器核102被划分到的组来确定处理器核102的能量性能偏好,并且向该处理器核102提供配置信息使得处理器核102能够根据所确定的能量性能偏好来运行。核配置模块132还可以基于在该处理器核102上运行的线程114的重要性级别来确定处理器核102的频率范围。核划分模块136确定哪些处理器核102在多个不同组中的哪个组中。处理器核102被分配到的组可以随时间改变,如下面更详细地讨论的。
每个处理器核102可以操作以在不同频率范围内执行线程114。通常,在较高频率执行线程导致线程114的执行比在较低频率执行时更快,但是与在较低频率执行时相比还具有更多功耗。在一个或多个实施例中,基于线程重要性的核配置系统122配置有或以其他方式获取与线程的不同重要性级别相关联的各种不同频率范围的指示。在一个或多个实施例中,这些相关联的频率范围被选择或确定为使得较低重要性的线程在更有效的频率范围(例如,在处理器核102执行线程的最有效频率范围的阈值量内)执行,但比重要性较高的线程慢。基于线程重要性的核配置系统122利用线程的重要性级别来减少处理器核102在执行线程时所消耗的功率,同时记住不重要的工作(例如,由具有较低重要性级别的线程完成)是不紧急的。
在一个或多个实施例中,与线程的不同重要性级别相关联的不同频率范围的指示被提供给基于线程重要性的核配置系统122。这些指示可以在基于线程重要性的核配置系统122中预先配置,可以被保持在基于线程重要性的核配置系统122可访问的数据存储(例如,注册表、数据库等)中,等等。在这种情况下,指示由另一设备或组件预先确定,诸如处理器核102的制造商、计算设备100的原始设备制造商(OEM)等。
另外地或替代地,基于线程重要性的核配置系统122确定与线程的不同重要性级别相关联的不同频率范围。基于线程重要性的核配置系统122可以以各种不同方式确定与线程的不同重要性级别相关联的不同频率范围。在一个或多个实施例中,基于线程重要性的核配置系统122包括在处理器核102上运行工作负荷(例如,指令集)以确定各种频率范围的模块,如下所述。
图2是示出根据一个或多个实施例的用于确定与线程的不同重要性级别相关联的不同频率范围的示例过程200的流程图。过程200由诸如图1的计算设备100等计算设备执行,并且可以用软件、固件、硬件或其组合来实现。过程200被示出为一组动作,并且不限于所示的用于执行各种动作的操作的顺序。过程200是用于实现确定与线程的不同重要性级别相关联的不同频率范围的示例过程;本文中参考不同附图包括实现确定与线程的不同重要性级别相关联的不同频率范围的附加讨论。
在过程200中,以多个不同频率中的每个频率在处理器核上执行工作负荷(动作202)。工作负荷是一组指令。处理器核运行的频率可以由在计算设备102上运行的程序指定,诸如通过设置处理器核的一个或多个寄存器,如上所述。工作负荷在处理器核上以多个不同频率中的每个执行,诸如通过以较低频率(例如,500兆赫(MHz))开始并且将频率递增100MHz直到上限频率(例如,处理器核的最高额定频率,诸如2.9千兆赫(GHz))。因此,例如,工作负荷以500MHz执行,然后以600MHz执行,然后以700MHz执行,依此类推。
对于执行工作负荷的每个频率,确定该频率的处理器核的功耗(动作204)。处理器核在该频率下的功耗可以以各种不同的方式确定。在一个或多个实施例中,处理器核包括寄存器,处理器核在该寄存器中记录处理器核在任何给定时间消耗多少能量(例如,多少焦耳)。该寄存器由在计算设备102上运行的程序读取,并且在处理器核运行的频率下的平均功耗可以通过将在以该频率运行时处理器核消耗的能量的量除以处理器核以该频率运行的时间量来容易地确定。
对于执行工作负荷的动作202中的多个不同频率中的每个,确定处理器核的每瓦特性能(动作206)。对于多个不同频率中的每个,可以通过将频率除以在该频率下确定的功耗来容易地生成每瓦特性能。尽管本文中讨论了每瓦特性能,但是应当注意,可以替代地使用除了瓦特之外的功率单位。
基于多个频率中的每个频率的每瓦特性能,将频率范围与每个重要性级别相关联(动作208)。可以应用各种不同的规则或标准来将重要性级别与频率范围相关联。在一个或多个实施例中,使用两个重要性级别:重要和不重要。给定多个不同频率中的每个的每瓦特性能,可以容易地标识出给出最大或最高每瓦特性能的一个或多个频率。不重要的重要性级别的频率范围包括具有最大或最高每瓦特性能的一个或多个频率(或者在给出最大或最高每瓦特性能的一个或多个频率的阈值量(诸如5%)内的一个或多个频率)。不重要的重要性级别的频率范围还可以包括附加频率,诸如每瓦特性能在最大或最高每瓦特性能的阈值量(例如,5%)内的频率。继续该示例,重要的重要性级别的频率范围的范围是从不重要的重要性级别的频率范围的上限到满足性能阈值的另一值。该性能阈值可以以各种方式确定,诸如每瓦特性能比最大或最高每瓦特性能低阈值量(例如,10%)的频率。
可以为计算设备100中的每个处理器核102执行过程200。替代地,如果两个处理器核102相同(例如,以相同的速度操作,具有相同的架构,等等),则与在动作208中针对处理器核102之一确定的每个重要性级别相关联的频率范围可以用于其他相同的处理器核102。
图3示出了根据一个或多个实施例的处理器核的性能的示例图300。横(X)轴上是以GHz为单位的处理器核频率,并且纵(Y)轴上是每瓦特性能。范围从1.1GHz到1.8GHz的频率范围302与不重要的重要性级别相关联。范围从1.8GHz到2.4GHz的频率范围304与重要的重要性级别相关联。
返回图1,线程重要性确定模块134确定每个线程114的重要性级别。可以使用各种不同的规则或标准来确定线程114的重要性级别。在一个或多个实施例中,使用两个重要性级别:重要和不重要。在默认情况下,线程114被确定为具有不重要的重要性级别,除非一个或多个标准指示线程114具有重要的重要性级别。本文中讨论各种不同的标准。应当注意,这些标准是示例,并且并不是需要使用所有这些标准,和/或可以使用其他标准。
用于确定线程114是否具有重要的重要性级别的一个标准是线程114是否属于前台进程或其后代。前台进程是指在计算设备100上运行的最前面或前台进程。前台进程的后代是由前台进程产生的进程。如果线程114属于前台进程或前台进程的后代,则确定线程114具有重要的重要性级别。
用于确定线程114是否具有重要的重要性级别的另一标准是线程114是否拥有前台或可见窗口。前台或可见窗口是指由计算设备109显示并且可见(例如,由观看计算设备100的显示器的用户看到)的窗口。如果线程114拥有前台或可见窗口,则确定线程114具有重要的重要性级别。
用于确定线程114是否具有重要的重要性级别的另一标准是线程是否代表具有重要的重要性级别的另一线程工作(例如,经由跨线程/进程通信机制)。哪些线程代表另一线程工作在与线程相关联的数据中指示(例如,由操作系统104保持的线程元数据)。代表其他线程工作的线程链可以跟随有基于线程重要性的核配置系统122以确定线程是否代表具有重要的重要性级别的另一线程工作。如果线程114代表具有重要的重要性级别的另一线程工作,则确定线程114具有重要的重要性级别。
用于确定线程114是否具有重要的重要性级别的另一标准是线程114是否具有高CPU(处理器)优先级。线程114通常具有正常优先级,但是可以由于各种不同原因中的任何一种而由操作系统104增加到高优先级线程,诸如线程114正在等待I/O,线程114属于前台进程,线程114正在竞争锁定,等等。如果线程114具有高CPU优先级,则确定线程114具有重要的重要性级别。
用于确定线程114是否具有重要的重要性级别的另一标准是线程114是否是系统线程。系统线程是指属于操作系统104的进程的线程。属于操作系统104的所有进程的线程可以是系统线程,或者替代地仅是一些线程(例如,内核模式线程或由操作系统104以其他方式指定的线程)可以是系统线程。如果线程114是系统线程,则确定线程114具有重要的重要性级别。
用于确定线程114是否具有重要的重要性级别的另一标准是线程114是否涉及音频回放。如果线程属于回放音频数据的进程(例如,作为音乐播放器程序的实例化的进程),则线程114涉及音频回放。如果线程114涉及音频回放,则确定线程114具有重要的重要性级别。
用于确定线程114是否具有重要的重要性级别的另一标准是线程114是否涉及显示图形。如果线程属于生成视频数据的进程(例如,作为电影播放器程序的实例化的进程)或以其他方式处理视频数据,则线程114涉及显示图形。如果线程114涉及显示图形,则确定线程114具有重要的重要性级别。
用于确定线程114是否具有重要的重要性级别的另一标准是线程114是否已经明确地请求具有重要的重要性级别。线程114可以出于各种不同原因中的任何一个而请求具有重要的重要性级别,诸如线程114不希望被限制。如果线程114已经明确地请求具有重要的重要性级别,则确定线程114具有重要的重要性级别。
用于确定线程114是否具有重要的重要性级别的另一标准是线程114是否属于已知在后台中的应用。后台中的应用是指例如在计算设备102的显示器上最小化或以其他方式不可见(例如,查看计算设备102的显示器的计算设备102的用户不可见)的应用。如果线程114属于已知在后台中的应用,则确定线程114具有不重要的重要性级别。
尽管本文中针对两个不同的重要性级别包括示例,但是应当注意,基于线程重要性的核配置系统122和调度器120可以支持任何数目的不同重要性级别。使用各种不同的规则或标准来确定线程114具有多个不同重要性级别中的哪个。
例如,基于线程重要性的核配置系统122和调度器120可以支持三个重要性级别:不重要、重要和超重要。可以使用上面讨论的一个或多个标准来确定线程114具有重要的重要性级别还是不重要的重要性级别。可以使用附加标准来确定线程114是否具有超重要的重要性级别,诸如线程114是否在错过期限的阈值时间量内。各种线程114可以具有必须运行的不同期限,诸如播放音频数据或视频数据。如果线程114在错过期限的阈值时间量(例如,5毫秒)内,则确定线程114具有超重要的重要性级别。
核划分模块136将处理器核102划分(在本文中也称为分组)成不同的组。在一个或多个实施例中,处理器核102被划分为与线程114的重要性级别一样多的不同组,并且每个重要性级别与多个不同组中的一个相关联。作为示例,如果线程的多个不同重要性级别包括两个重要性级别(例如,重要和不重要),则核划分模块136将处理器核102分组为两个组(例如,金组和银组)。一个重要性级别与组之一相关联(例如,重要的重要性级别与金组相关联),并且另一重要性级别与另一组相关联(例如,不重要的重要性级别与银组相关联)。作为另一示例,如果线程的多个不同重要性级别包括三个重要性级别(例如,不重要、重要和超重要),则核划分模块136将处理器核102分组为三个组(例如,银组、金组和铂组)。一个重要性级别与每个组相关联(例如,不重要的重要性级别与银组相关联,重要的重要性级别与金组相关联,并且超重要的重要性级别与铂组相关联)。
在一个或多个实施例中,核划分模块136向核配置模块132通知哪些处理器核102被分配给哪些组,并且核配置模块132基于处理器核102被划分到的组来确定每个处理器核102的频率范围。每个组与特定重要性级别相关联,并且特定组中的每个处理器核102的频率范围被确定为与该特定重要性级别相关联的频率范围。例如,如果使用两个重要性级别(不重要和重要),则核配置模块132确定与不重要的重要性级别相关联的组(例如,银组)中的处理器核102的频率范围将是具有最大或最高每瓦特性能的一个或多个频率(或者在给出最大或最高每瓦特性能的一个或多个频率的阈值量(诸如5%)内的一个或多个频率)。替代地,核配置模块132可以确定具有最大或最高每瓦特性能的一个或多个频率的频率范围太低(即使对于不重要的工作)并且因此确定与不重要的重要性级别相关联的组(例如,银组)中的处理器核102将具有较高频率范围。继续该示例,核配置模块确定与重要的重要性级别相关联的组(例如,金组)中的处理器核102的频率范围的范围是从不重要的重要性级别的频率范围的上限到满足性能阈值的另一值(例如,每瓦特性能是比最大或最高每瓦特性能低阈值量(例如,10%)的频率)。
核配置模块132将每个组中的处理器核102配置为在与该组相关联的频率范围内运行。核配置模块132可以以如上所述的各种方式将处理器核102配置为在特定频率范围内运行,诸如通过将指示频率范围的一个或多个值写入处理器核102。应当注意,如本文中讨论的频率范围可以是宽范围(例如,跨越500MHz或更多)或窄范围(例如,跨越50MHz)。核配置模块132还可以指定作为与线程的重要性级别相关联的频率范围的单个频率,并且认识到处理器核102可以在大致等于(例如,在阈值量(诸如3%)内)指定频率的频率范围运行。
另外地或替代地,核配置模块132可以向处理器核102提供与处理器核102作为其一部分的组相关联的重要性级别的指示(例如,“重要”或“不重要”的数据值)。该重要性级别也可以是例如上面讨论的能量性能偏好。然后,处理器核102能够利用该信息在执行线程114时做出各种不同的功率节省决定。例如,处理器核102可以预先配置有每个重要性级别的频率范围,并且因此不需要由基于线程重要性的核配置系统122来被通知这样的频率范围。作为另一示例,处理器核102可以针对处理器核102已知为不重要的线程采用附加功率节省技术,并且可以将这些附加功率节省技术应用于具有不重要的重要性级别的线程。作为另一示例,处理器核102可以基于处理器核102正在据此运行的能量性能偏好来在响应于处理器核102的利用率的增加而增加处理器核102的频率时或多或少地是积极的。
在一个或多个实施例中,核划分模块136向核配置模块132通知哪些处理器核102被分配给哪些组,并且核配置模块132将每个组中的处理器核102配置为根据与该组相关的特定能源性能偏好来运行。与每个组相关联的能量性能偏好可以以各种方式确定,诸如在核配置模块132中预先配置,从另一设备或服务取得,等等。核配置模块132可以以如上所述的各种方式将处理器核102配置为根据特定能量性能偏好来运行,诸如通过将指示能量性能偏好的值写入处理器核102的寄存器。
应当注意,线程的优先级可以如上所述影响线程的重要性级别,但是线程的优先级不同于线程的重要性级别。调度器120使用线程的优先级来确定哪些线程以哪个顺序执行(例如,较高优先级线程在较低优先级线程之前执行)。调度器120使用线程的重要性级别来确定线程在哪个处理器核102上执行以及线程在哪个频率范围执行。
调度器120调度线程114以在与和线程114相同的重要性级别相关联的组中的处理器核120上执行。例如,调度器120调度具有重要的重要性级别的线程114以在金组中的处理器核102上执行,并且调度具有不重要的重要性级别的线程114以在银组中的处理器核102上执行。因此,可以看出,与具有较低重要性级别的线程被调度为在其上执行的处理器核102相比,具有较高重要性级别的线程被调度为在在较高频率范围内运行(和/或响应于利用率的增加而更积极地增加频率)的处理器核102上执行。
通过调度具有相同重要性级别的线程以在同一组处理器核102上执行,可以以更功率效率的方式执行较低重要性级别线程,而无需在每个上下文切换处花费任何时间或精力来切换频率范围和/或处理器核102的能量性能偏好。例如,与基于正在执行的线程114的重要性级别在每个上下文切换处改变处理器核102的频率范围相反,线程114被选择为具有相同的重要性级别,因此不需要频率范围改变。
应当注意,对于给定线程114,可能出现如下这样的情况,其中与和线程114相同的重要性级别相关联的组中的处理器核102不可用于执行线程114。处理器核102可能由于各种不同的原因而不可用,诸如组中的处理器核102已经正在运行更高优先级的线程。在这种情况下,调度器120可以调度线程114以在不同组中的处理器核102上执行。
在一个或多个实施例中,如果线程114被调度为在不同于与和线程114相同的重要性级别相关联的组的组中的处理器核102上执行,则线程114在其上执行的处理器核的频率范围和/或能量性能偏好被改变为与线程114的重要性级别相关联的频率范围和/或能量性能偏好。可以通过将处理器核配置为以下来改变处理器核的频率范围。如上所述,处理器核的频率范围可以通过以各种方式将处理器核配置为在适当的频率范围(与线程114的重要性级别相关联的频率范围)内运行来改变,诸如向处理器核的一个或多个寄存器写入值。处理器核的能量性能偏好可以通过以如上所述的各种方式将处理器核配置为根据适当的能量性能偏好进行运行来改变,诸如向处理器核的一个或多个寄存器写入值。处理器核可以在线程114的执行期间(例如,直到下一上下文切换)保持以该频率范围和/或能量性能偏好运行,并且然后返回到其先前的频率范围和/或能量性能偏好,或者替代地,可以保持在该频率范围和/或能量性能偏好,直到在处理器核上执行不同重要性级别的线程。
例如,假定线程有两个重要性级别(不重要和重要),并且不重要的重要性级别与银组处理器核相关联,并且重要的重要性级别与金组处理器核相关联。如果要调度具有重要的重要性级别的线程但是金组中的处理器核都不可用于执行该线程,则调度器120可以调度线程以在银组中的处理器核上执行并且通知核配置模块132将银组中的处理器核配置为以与重要的重要性级别相关联的频率范围和/或能量性能偏好来执行线程。处理器核可以保持在该频率范围和/或能量性能偏好,直到下一上下文切换,或者直到在处理器核上执行具有不重要的重要性级别的下一线程。类似地,如果要调度具有不重要的重要性级别的线程但是银组中的处理器核都不可用于执行该线程,则调度器120可以调度线程以在金组中的处理器核上执行并且通知核配置模块132将金组中的处理器核配置为以与不重要的重要性级别相关联的频率范围和/或能量性能偏好来执行线程。处理器核可以保持在该频率范围和/或能量性能偏好,直到下一上下文切换,或者直到在处理器核上执行具有重要的重要性级别的下一线程。
核划分模块136可以以各种不同方式确定哪些处理器核102在哪些组中。在一个或多个实施例中,当计算设备100开始运行(例如,被引导或重置)时,核划分模块136使用用于处理器核102的默认分组。默认分组可以在核划分模块136中预先配置,可以是设置的用户偏好值,可以从另一设备或服务(例如,经由因特网)获取,可以是在计算设备100最后被关闭或重置之前由核划分模块136保存的值,等等。默认分组标识要包括在每个组中的处理器核102的数目。核划分模块136为每个组选择(例如,随机地或根据其他规则或标准)处理器核102,并且向调度器120通知哪些处理器核102在哪些组中。核划分模块136还向核配置模块132通知哪些处理器核102在哪些组中(和/或每个处理器核102的频率范围),并且核配置模块132将处理器核配置为以适当的频率范围和/或能量性能偏好运行,如上所述。
核划分模块136还监测计算设备100的操作,包括在计算设备100上执行的线程114,并且确定何时调节特定组中的处理器核102的数目。核划分模块136可以响应于特定事件发生或满足条件等而确定以规则或不规则的间隔来调节特定组中的处理器核102的数目。处理器核102可以从与较低重要性级别相关联的组重新分配给与较高重要性级别相关联的组,也称为升级处理器核102。处理器核102可以从与较高重要性级别相关联的组重新分配给与较低重要性级别相关联的组,也称为降级处理器核102。在一个或多个实施例中,一次升级或降级一个处理器核102。替代地,可以一次升级或降级多个处理器核102(例如,两个处理器核102可以从银组升级到金组)。
为了将处理器核102重新分配给不同的组,核划分模块136向调度器120通知处理器核102的新组。核划分模块136还向核分配模块132通知处理器核102的新组,并且核配置模块132将处理器核102配置为以新组的频率范围和/或能量性能偏好运行,如上所述。
核划分模块136可以保持关于计算设备100中的线程的运行的各种统计信息。这些统计信息可以包括例如由具有特定重要性级别(例如,重要的重要性级别)的线程在一段时间(例如,前50毫秒(ms))内对处理器核102的利用率。另一示例统计信息是由具有特定重要性级别(例如,重要的重要性级别)的线程在一段时间(例如,前50ms)内执行的并发线程的数目。另一示例是有多少具有特定重要性级别(例如,重要的重要性级别)的线程在当前时间正在就绪队列中等待(等待执行)或者在某个时间点已经在就绪队列中等待一段时间(例如,前50毫秒)。
可以将各种不同的规则或标准应用于这些统计信息以确定是否调节特定组中的处理器核102的数目。例如,如果由具有重要的重要性级别的线程在一段时间内对处理器核102存在至少阈值利用率(例如,20%),则核划分模块136可以确定增加金组中的处理器核的数目。替代地,如果由具有重要的重要性级别的线程在一段时间内对处理器核102存在小于阈值利用率(例如,3%),则核划分模块136可以确定减少金组中的处理器核的数目。
作为另一示例,如果由具有重要的重要性级别的线程在一段时间内执行至少阈值数目(例如,3,其大于金组中的处理器核数目)的并发线程,则核划分模块136可以确定增加金组中的处理器核的数目。替代地,如果由具有重要性级别重要的线程在一段时间内执行少于阈值数目(例如,少于金组中的处理器核数目)的并发线程,则核划分模块136可以确定减少金组中处理器核的数目。作为另一示例,如果由具有重要的重要性级别的线程在一段时间(例如,50ms)内执行更多并发线程,则核划分模块136可以确定增加金组中的处理器核的数目。
作为另一示例,如果在一段时间内在就绪队列(等待执行)中有至少阈值数目(例如,8)的具有重要的重要性级别的线程,则核划分模块136可以确定增加金组中的处理器核数目。替代地,如果在一段时间内在就绪队列(等待执行)中有小于阈值数目(例如,2)的具有重要的重要性级别重要的线程,则核划分模块136可以确定减少金组中的处理器核的数目。
核划分模块136还可以以各种方式组合这些统计信息以确定是否调节特定组中的处理器核102的数目。例如,数值可以与这些统计信息中的每个相关联,并且这些数值被组合(例如,加在一起,平均,加权平均等)以确定是否满足阈值以指示调节特定组中的处理器核102的数目。
如果要将处理器核102重新分配给不同的组,则核划分模块136还确定要重新分配哪个处理器核。例如,如果银组中有四个处理器核并且金组中有四个处理器核并且银组中的处理器核之一将升级到金组,则核划分模块136确定要升级银组中的四个处理器核中的哪个。核划分模块136可以以各种方式确定要重新分配哪个处理器核。
在一个或多个实施例中,核划分模块136随机地选择处理器核。替代地,可以使用各种其他规则或标准来选择要重新分配的处理器核。核划分模块136可以保持关于处理器核和/或由处理器核执行的线程的各种信息,并且使用该信息进行选择。例如,该信息可以包括由于执行重要性级别不同于与处理器核作为其一部分的当前组相关联的重要性级别的线程,每个处理器核在一段时间(例如,前50ms)内其频率范围和/或能量性能偏好的增加或减少的频率。如果要升级处理器核,则可以选择在该持续时间内频率范围最频繁地增加和/或能量性能偏好最频繁地降低的处理器核。替代地,如果要降级处理器核,则可以选择在该持续时间内频率范围最频繁地降低和/或能量性能偏好最频繁地增加的处理器核。
另外地或替代地,该信息可以包括在一段时间(例如,前50ms)内在每个处理器核上执行多个不同重要性级别中的每个的多少线程的指示。如果要降级处理器核,则可以选择执行最大数目的重要性级别小于与包括处理器核的组相关联的重要性级别的线程的处理器核。替代地,如果要降级处理器核,则可以选择执行最小数目的重要性级别与和包括处理器核的组相关联的重要性级别相同的线程的处理器核。替代地,如果要升级处理器核,则可以选择执行最大数目的重要性级别高于与包括处理器核的组相关联的重要性级别的线程的处理器核。
还可以使用各种其他信息或标准来确定要选择哪个处理器核。例如,如果处理器核102包括物理上不同的核,则核划分模块136可以尝试使处理器核102在与较高重要性级别相关联的组中保持较高性能(例如,以较高频率范围运行)。因此,核划分模块136可以选择能够具有更高性能的处理器核用于升级,而不是不能具有更高性能的另一处理器核。
核划分模块136还可以使用各种附加配置信息或设置来确定是否调节特定组中的处理器核102的数目。该配置信息或设置可以是对特定组中可以包括多少处理器核的限制、对用于确定是升级还是降级特定组中的处理器核102的阈值或其他标准的调节等。
在一个或多个实施例中,核划分模块136至少部分基于计算设备100是由电池还是由AC供电来确定是否调节特定组中的处理器核102的数目。在计算设备100由AC供电的情况下,核划分模块136在确定是否升级处理器核时可以使用较低阈值并且在确定是否降级处理器核时可以使用较高阈值,这可能使得处理器核更有可能将被升级和/或更有可能处于与更高重要性级别相关联的组中。然而,如果计算设备100由电池供电,则核划分模块136在确定是否升级处理器核时可以使用较高阈值并且在确定是否降级处理器核时可以使用较低阈值,这可能使得处理器核不太可能将被升级和/或处理器核更有可能处于与较低重要性级别相关联的组中。例如,与由AC供电时相比,在计算设备100由电池供电时,这影响核划分模块136更加积极地将处理器核保持在更高功率效率的频率范围内。
在一个或多个实施例中,核划分模块136至少部分基于计算设备100是否处于电池节省模式来确定是否调节特定组中的处理器核102的数目。电池节省模式是计算设备100的被设计为节省电池电量的模式。在计算设备100不处于电池节省模式的情况下,核划分模块136可以在确定是否升级处理器核时使用较低阈值并且在确定是否降级处理器核时使用较高阈值,这可能使得处理器核更有可能将被升级和/或更有可能处于与较高重要性级别相关联的组中。然而,如果计算设备100处于电池节省模式,则核划分模块136在确定是否升级处理器核时可以使用较高阈值并且在确定是否降级处理器核时使用较低阈值,这可能使得处理器核更有可能被降级和/或处理器核更有可能处于与较低重要性级别相关联的组中。例如,与计算设备不处于电池节省模式时相比,在计算设备100处于电池节省模式时,这影响核划分模块136更积极地将处理器核保持在更功率效率的频率范围内。
此外,如果计算设备不处于电池节省模式,则核划分模块136可以对与较高(或最高)重要性级别或频率范围相关联的组中可以有多少处理器核没有限制。然而,如果计算设备处于电池节省模式,则核划分模块136可以限制与较高(或最高)重要性级别或频率范围相关联的组中可以有多少处理器核。例如,核划分模块136可以仅允许与最高重要性级别或频率范围相关联的组中有一个或两个核。例如,与计算设备不处于电池节省模式时相比,在计算设备100处于电池节省模式时,这影响核划分模块136以将处理器核保持在更功率效率的频率范围内。
在一个或多个实施例中,核划分模块136至少部分基于计算设备100的估计剩余电池寿命量来确定是否调节特定组中的处理器核102的数目。在剩余电池寿命量很高(例如,大于阈值,诸如80%)的情况下,核划分模块136在确定是否升级处理器核时可以使用较低阈值并且在确定是否降级处理器核可以使用较高阈值,这可能使得处理器核更有可能将被升级和/或更有可能处于与更高重要性级别相关联的组中。然而,如果剩余电池寿命量很低(例如,小于阈值,诸如30%),则核划分模块136在确定是否升级处理器核时可以使用较高阈值并且在确定是否降级处理器核时使用较低阈值,这可能使得处理器核不太可能将被升级和/或处理器核更有可能将处于与较低重要性级别相关联的组中。可以使用多个不同阈值量的剩余电池寿命,从而产生用于确定是升级还是降级处理器核的多个不同阈值。例如,与剩余电池寿命量更高时相比,当剩余电池寿命量更低时,这会影响核划分模块136更积极地将处理器核保持在更高功率效率的频率范围内。
在一个或多个实施例中,核划分模块136至少部分基于用户输入是否指示对计算设备100的高性能的期望来确定是否调节特定组中的处理器核102的数目。在用户输入指示对高性能的期望的情况下,核划分模块136可以在确定是否升级处理器核时使用较低阈值并且在确定是否降级处理器核时使用较高阈值,这可能使得处理器核更有可能将被升级和/或更有可能处于与更高重要性级别相关联的组中。然而,如果没有用户输入指示期望高性能,则核划分模块136在确定是否升级处理器核时可以使用较高阈值并且在确定是否降级处理器核时可以使用较低阈值,这可能使得处理器核不太可能将被升级和/或处理器核更有可能将位于与较低重要性级别相关联的组中。例如,与当没有用户输入指示期望高性能时相比,当用户输入指示对高性能的期望时,这会影响核划分模块136更积极地将处理器核保持在更高功率效率的频率范围内。
在一个或多个实施例中,核划分模块136至少部分基于计算设备100的热条件来确定是否调节特定组中的处理器核102的数目。例如,如果计算设备100的温度太高(例如,超过阈值量,诸如80华氏度),则可以限制与特定重要性级别相关联的组(例如,以较高频率范围运行的金组)中的处理器核102的数目。在计算设备100的温度不是太高的情况下,核划分模块136可以对与较高(或最高)重要性级别或频率范围相关联的组中可以有多少处理器核没有限制。然而,如果计算设备100的温度太高,则核划分模块136限制与较高(或最高)重要性级别或频率范围相关联的组中可以有多少处理器核。例如,核划分模块136可以仅允许与最高重要性级别或频率范围相关联的组中有一个或两个核。例如,当计算设备100的温度过高时,这影响核划分模块136将处理器核保持在更高功率效率的频率范围中,从而降低温度(或至少温度的任何增加)。
在一个或多个实施例中,核划分模块136至少部分基于来自在计算设备100上运行的应用的请求来确定是否调节特定组中的处理器核102的数目。例如,应用可以调用由核划分模块136公开的API,以指示它希望访问特定数目的高性能核。在这种情况下,核划分模块136将至少特定数目的处理器核保持在较高(或最高)重要性级别或频率范围内。例如,在由应用106请求时,这影响核划分模块136将处理器核保持在更高性能的频率范围内。
图4是示出根据一个或多个实施例的用于实现本文中讨论的技术的示例过程400的流程图。过程400由诸如图1的计算设备100等计算设备执行,并且可以用软件、固件、硬件或其组合来实现。过程400被示出为一组动作,并且不限于所示的用于执行各种动作的操作的顺序。过程400是用于实现本文中讨论的技术的示例过程;本文中参考不同的附图包括实现本文中讨论的技术的附加讨论。
在过程400中,将设备上的第一组处理器核配置为在第一频率范围运行(动作402)。该第一频率范围例如是与高(例如,重要的)重要性级别相关联的高性能频率范围。
将设备上的第二组处理器核配置为在第二频率范围运行(动作404)。该第二频率范围例如是与较低(例如,不重要的)重要性级别相关联的功率有效频率范围。第二频率范围包括低于第一频率范围内的频率的频率。
动作402和404中的配置可以在不同时间执行,并且可以随时间改变。例如,哪些处理器核被包括在第一频率范围中以及哪些处理器核被包括在第二频率范围中是动态的,并且可以在计算设备运行时通过计算设备实现过程400来改变。
确定被调度为在处理器核上执行的线程的重要性级别(动作406)。重要性级别是多个不同的重要性级别之一(例如,重要和不重要),并且可以以如上所述的各种不同方式确定。
确定线程要在第一组处理器核还是第二组处理器核上执行(动作408)。该确定基于线程的重要性级别进行。例如,每组处理器核具有相关联的重要性级别,并且确定在与线程具有相同重要性级别的组中的处理器核上执行线程。
调度线程以在所确定的一组处理器核上执行(动作410)。该线程通常在所确定的一组处理器核中的处理器核之一上执行。
图5是示出根据一个或多个实施例的用于实现本文中讨论的技术的示例过程500的流程图。过程500由诸如图1的计算设备100等计算设备执行,并且可以用软件、固件、硬件或其组合来实现。过程500被示出为一组动作,并且不限于所示的用于执行各种动作的操作的顺序。过程500是用于实现本文中讨论的技术的示例过程;本文中参考不同的附图包括实现本文中讨论的技术的附加讨论。
在过程500中,将设备上的第一组处理器核配置为根据第一能量性能偏好运行(动作502)。该第一能量性能偏好是例如与高(例如,重要的)重要性级别相关联的高性能偏好。
将设备上的第二组处理器核配置为根据第二能量性能偏好运行(动作504)。该第二能量性能偏好例如是与较低(例如,不重要的)重要性级别相关联的较低性能。与第二能量性能偏好相比,第一能量性能偏好指示处理器核在频率增加时更积极。
动作502和504中的配置可以在不同时间执行,并且可以随时间改变。例如,哪些处理器核将根据第一能量性能偏好运行以及哪些处理器核将根据能量性能偏好运行是动态的,并且可以在计算设备运行时通过计算设备实现过程500来改变。
确定被调度为在处理器核上执行的线程的重要性级别(动作506)。重要性级别是多个不同的重要性级别之一(例如,重要和不重要),并且可以以如上所述的各种不同方式确定。
确定线程要在第一组处理器核还是第二组处理器核上执行(动作508)。该确定基于线程的重要性级别进行。例如,每组处理器核具有相关联的重要性级别,并且确定在与线程具有相同重要性级别的组中的处理器核上执行线程。
调度线程以在所确定的一组处理器核上执行(动作510)。该线程通常在所确定的一组处理器核中的处理器核之一上执行。
应当注意,尽管过程400和500被示出为单独的流程图,但是这两者可以同时使用。因此,本文中讨论的技术可以用于仅调节处理器核的频率范围,仅调节处理器核的能量性能偏好,或者调节处理器核的频率范围和能量性能偏好两者。
因此,本文中讨论的技术允许(例如,通过操作系统)决定处理器核的配置,诸如选择不同组中的处理器核运行的频率范围以及基于线程的重要性级别来调度线程以在特定组的处理器核上执行。因此,可以实现智能功率节省系统,其允许被认为具有高重要性的线程快速运行,并且运行被认为不太重要的线程(例如,因为它们的工作不直接影响用户体验并且因此可能不是紧急的)以便以更大的功率节省(例如,处理器核的最高或接近最高效率)来运行。
应当注意,在一些情况下,处理器核102可能不在由核配置模块132给它们配置的频率范围内运行。例如,当多个处理器核102是相同功率域的一部分并且实现多个处理器核102的芯片不能够针对不同的处理器核102支持不同的并发频率时,可能出现这种情况。然而,仍然可以使用本文中讨论的技术,并且由于针对某些重要性级别(例如,不重要的重要性级别)的线程以更高功率效率的频率范围运行处理器核102而节省了功率。例如,可以实现这种节省,因为假定以较高频率范围运行的处理器核102将在一定时间内空闲,此时芯片将允许以更高功率效率频率范围运行的处理器核以更高功率效率的频率范围而不是更高频率范围运行。
图6总体上以600示出了包括示例计算设备602的示例系统,示例计算设备602表示可以实现本文中描述的各种技术的一个或多个系统和/或设备。计算设备602可以是例如服务提供商的服务器、与客户端(例如,客户端设备)相关联的设备、片上系统和/或任何其他合适的计算设备或计算系统。
如图所示的示例计算设备602包括处理系统604、一个或多个计算机可读介质606、以及彼此通信地耦合的一个或多个I/O接口608。虽然未示出,但是计算设备602还可以包括将各种组件彼此耦合的系统总线或其他数据和命令传输系统。系统总线可以包括利用各种总线架构中的任何总线架构的不同总线结构中的任何一个或组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线、和/或处理器或本地总线。还构想了各种其他示例,诸如控制和数据线。
处理系统604表示使用硬件执行一个或多个操作的功能。因此,处理系统604被示出为包括可以被配置为处理器、功能块等的硬件元件610。这可以包括用硬件实现为专用集成电路或使用一个或多个半导体形成的其他逻辑器件。硬件元件610不受形成它们的材料或其中采用的处理机制的限制。例如,处理器可以包括半导体和/或晶体管(例如,电子集成电路(IC))。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
计算机可读介质606被示出为包括存储器/存储设备612。存储器/存储设备612表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储设备612可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、电阻RAM(ReRAM)、闪存、光盘、磁盘等)。存储器/存储设备612可以包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移除介质(例如,闪存、可移除硬盘驱动器、光盘等)。计算机可读介质606可以以下面进一步描述的各种其他方式配置。
一个或多个输入/输出接口608表示允许用户向计算设备602输入命令和信息并且还允许使用各种输入/输出设备将信息呈现给用户和/或其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,被配置为检测物理触摸的电容或其他传感器)、相机(例如,其可以采用诸如红外频率等可见或不可见波长来检测不涉及作为手势的触摸的移动)等。输出设备的示例包括显示设备(例如,显示器或投影仪)、扬声器、打印机、网卡、触觉响应设备等。因此,计算设备602可以以下面进一步描述的各种方式配置以支持用户交互。
计算设备602还包括基于线程重要性的核配置系统614和调度器616。基于线程重要性的核配置系统614结合调度器616提供各种功能以将各组处理器核配置为在不同频率运行。基于线程重要性的核配置系统614通常被实现为计算设备602的操作系统的一部分,但是替代地可以与操作系统分开地实现。基于线程重要性的核配置系统614可以实现例如图1的基于线程重要性的核配置系统122。调度器616可以实现例如图1的调度器120。
本文中可以在软件、硬件元件或程序模块的一般上下文中描述各种技术。通常,这样的模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元件、组件、数据结构等。本文中使用的术语“模块”、“功能”和“组件”通常表示软件、固件、硬件或其组合。本文中描述的技术的特征是平台无关的,这表示这些技术可以在具有各种处理器的各种计算平台上实现。
所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或通过其传输。计算机可读介质可以包括可以由计算设备602访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
“计算机可读存储介质”是指能够持久存储有形的信息和/或存储的介质和/或设备,与仅仅信号传输、载波或信号本身相反。计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括以适于存储诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据等信息的方法或技术实现的硬件,诸如易失性和非易失性、可移除和不可移除介质和/或存储设备。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光学存储器、硬盘、磁带盒、磁带、磁盘存储器或其他磁存储设备、或者适于存储期望的信息并且可以由计算机访问的其他存储设备、有形介质或制品。
“计算机可读信号介质”是指被配置为诸如经由网络向计算设备602的硬件传输指令的信号承载介质。信号介质通常可以包含计算机可读指令、数据结构、程序模块或者诸如载波、数据信号或其他传输机制等调制数据信号中的其他数据。信号介质还包括任何信息传递介质。术语“调制数据信号”表示以使得能够在信号中对信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接等有线介质以及诸如声学、RF、红外和其他无线介质等无线介质。
如前所述,硬件元件610和计算机可读介质606表示在一些实施例中可以用于实现本文中描述的技术的至少一些方面的以硬件形式实现的指令、模块、可编程设备逻辑和/或固定设备逻辑。硬件元件可以包括集成电路或片上系统、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及硅或其他硬件设备的其他实现的组件。在本上下文中,硬件元件可以作为执行由硬件元件实现的指令、模块和/或逻辑定义的程序任务的处理设备以及用于存储用于执行的指令的硬件设备(例如,先前描述的计算机可读存储介质)进行操作。
还可以采用前述的组合来实现本文中描述的各种技术和模块。因此,软件、硬件或程序模块和其他程序模块可以实现为包含在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件610实现的一个或多个指令和/或逻辑。计算设备602可以被配置为实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,作为由计算设备602作为软件可执行的模块的模块的实现可以至少部分以硬件实现,例如,通过使用处理系统的计算机可读存储介质和/或硬件元件610。指令和/或功能可以由一个或多个制品(例如,一个或多个计算设备602和/或处理系统604)执行/操作以实现本文中描述的技术、模块和示例。
如图6中进一步所示,示例系统600使得无处不在的环境能够在个人计算机(PC)、电视设备和/或移动设备上运行应用时获取无缝的用户体验。服务和应用在所有三种环境中运行时基本上相似,以便在使用应用,玩视频游戏,观看视频等时从一个设备转换到下一设备时获取共同的用户体验。
在示例系统600中,多个设备通过中央计算设备互连。中央计算设备可以是多个设备的本地设备,或者可以远离多个设备。在一个或多个实施例中,中央计算设备可以是通过网络、因特网或其他数据通信链路连接到多个设备的一个或多个服务器计算机的云。
在一个或多个实施例中,该互连架构使得能够跨多个设备递送功能以向多个设备的用户提供共同且无缝的体验。多个设备中的每个可以具有不同的物理要求和能力,并且中央计算设备使用平台来实现向设备传递体验,该体验既是针对设备定制的又是所有设备共有的。在一个或多个实施例中,创建一类目标设备,并且为通用的一类设备定制体验。可以通过物理特征、使用类型或设备的其他共同特性来定义一类设备。
在各种实现中,计算设备602可以采用各种不同的配置,诸如用于计算机618、移动设备620和电视622使用。这些配置中的每个包括可以具有通常不同的构造和能力的设备,并且因此计算设备602可以根据一个或多个不同的设备类来配置。例如,计算设备602可以实现为计算机618类设备,其包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等。
计算设备602还可以实现为包括移动设备的移动设备620类设备,诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等。计算设备602还可以实现为电视622类设备,其包括在休闲观看环境中具有或连接到通常更大的屏幕的设备。这些设备包括电视机、机顶盒、游戏机等。
本文中描述的技术可以由计算设备602的这些各种配置支持,并且不限于本文中描述的技术的特定示例。该功能还可以全部或部分地通过使用分布式系统来实现,诸如经由如下所述的平台626在“云”624上实现。
云624包括和/或表示用于资源628的平台626。平台626抽象云624的硬件(例如,服务器)和软件资源的基础功能。资源628可以包括在远离计算设备602的服务器上执行计算机处理时可以使用的应用和/或数据。资源628还可以包括通过因特网和/或通过订户网络(诸如蜂窝或Wi-Fi网络)提供的服务。
平台626可以抽象资源和功能以将计算设备602与其他计算设备连接。平台626还可以用于抽象资源的缩放以提供相应的规模级别以满足经由平台626实现的对资源628的需求。因此,在互连的设备实施例中,本文中描述的功能的实现可以分布在整个系统600中。例如,功能可以部分地在计算设备602上以及经由抽象云624的功能的平台626来实现。
在本文中的讨论中,描述了各种不同的实施例。应当了解和理解,本文中描述的每个实施例可以单独使用或与本文中描述的一个或多个其他实施例结合使用。本文中讨论的技术的其他方面涉及以下实施例中的一个或多个。
一种方法,包括:将设备中的第一组一个或多个处理器核配置为在第一频率范围运行;将设备中的第二组一个或多个处理器核配置为在第二频率范围运行,第二频率范围包括低于第一频率范围内的频率的频率;确定被调度为在设备上执行的第一线程的重要性级别,重要性级别是多个不同的重要性级别之一;基于第一线程的重要性级别来确定第一线程要在第一组一个或多个处理器核还是第二组一个或多个处理器核上执行;以及调度第一线程以在所确定的一组一个或多个处理器核上执行。
作为任何上述方法的替代或补充,以下中的任何一个或组合:两个重要性级别包括重要的重要性级别和不重要的重要性级别,确定第一线程要在第一组一个或多个处理器核还是第二组一个或多个处理器核上执行包括:响应于确定第一线程的重要性级别是重要的而确定第一线程要在第一组一个或多个处理器核上执行,以及响应于确定第二线程的重要性级别是不重要的而确定第一线程要在第二组一个或多个处理器核上执行;第一组一个或多个处理器核和第二组一个或多个处理器核中的所有处理器核包括同质处理器核;方法还包括在设备的操作期间动态地调节在第一组一个或多个处理器核中包括设备的哪些处理器核以及在第二组一个或多个处理器核中包括设备的哪些处理器核;第一组一个或多个处理器核与多个重要性级别中的第一重要性级别相关联,并且第二组一个或多个处理器核与多个重要性级别中的第二重要性级别相关联,动态调节包括:确定设备中是否存在比具有第二重要性级别的线程更多的具有第一重要性级别的并发线程;以及响应于设备中存在比具有第二重要性级别的线程更多的具有第一重要性级别的并发线程,将第二组一个或多个处理器核中的至少一个处理器核升级为第一组一个或多个处理器核之一;第一组一个或多个处理器核与多个重要性级别中的第一重要性级别相关联,并且第二组一个或多个处理器核与多个重要性级别中的第二重要性级别相关联,动态调节包括:确定是否至少阈值数目的具有第一重要性级别的线程在第二组一个或多个处理器核上被调度;以及响应于至少阈值数目的具有第一重要性级别的线程在第二组一个或多个处理器核上被调度,将第二组一个或多个处理器核中的至少一个处理器核升级为第一组一个或多个处理器核之一;第一组一个或多个处理器核与多个重要性级别中的第一重要性级别相关联,并且第二组一个或多个处理器核与多个重要性级别中的第二重要性级别相关联,动态调节包括:确定是否至少阈值数目的具有第二重要性级别的线程在第一组一个或多个处理器核上被调度;以及响应于至少阈值数目的具有第二重要性级别的线程在第一组一个或多个处理器核上被调度,将第一组一个或多个处理器核中的至少一个处理器核降级为第二组一个或多个处理器核之一;第一组一个或多个处理器核与多个重要性级别中的第一重要性级别相关联,并且第二组一个或多个处理器核与多个重要性级别中的第二重要性级别相关联,所确定的一组一个或多个处理器核包括第一组一个或多个处理器核,方法还包括:确定在第一组一个或多个处理器核中是否存在可用于执行第一线程的至少一个处理器核,调度第一线程用于执行包括:响应于在第一组处理器核中存在可用于执行第一线程的至少一个处理器核,调度第一线程以在第一组一个或多个处理器核上执行;以及响应于确定在第一组处理器核中没有可用于执行第一线程的至少一个处理器核:调度第一线程以在第二组一个或多个处理器核上执行;以及将第一线程被调度以在其上执行的处理器核配置为在较高频率范围运行;较高频率范围包括第一频率范围;与第一频率范围内的频率引起第一组一个或多个处理器核进行操作相比,第二频率范围内的频率引起第二组一个或多个处理器核更有效地进行操作,如由每瓦特性能确定的。
一种计算设备,包括:多个处理器核;以及计算机可读存储介质,其上存储有多个指令,多个指令响应于由多个处理器核的执行而引起多个处理器核执行包括以下各项的操作:将多个处理器核中的第一组配置为根据第一能量性能偏好运行,第一组处理器核中的每个处理器核与第一重要性级别相关联;将多个处理器核中的第二组配置为根据第二能量性能偏好运行,第二组处理器核中的每个处理器核与第二重要性级别相关联,与第二能量性能偏好相比,第一能量性能偏好指示在频率增加时更积极;确定被调度为在计算设备上执行的第一线程的重要性级别;以及调度第一线程以在第一组多个处理器核或第二组多个处理器核中的关联于与第一线程相同的重要性级别的一组多个处理器核上执行。
作为任何上述计算设备的替代或补充,以下中的任何一个或组合:多个处理器核中的所有处理器核包括一组同质处理器核;操作还包括在计算设备的操作期间动态地调节在多个处理器核中的第一组中包括多个处理器核中的哪些处理器核以及在多个处理器核中的第二组中包括多个处理器核中的哪些处理器核;动态调节包括:确定是否至少阈值数目的具有第一重要性级别的线程正在等待执行,以及响应于至少阈值数目的具有第一重要性级别的线程正在等待执行,将多个处理器核中的第二组中的至少一个处理器核升级为多个处理器核中的第一组中的一个处理器核。
一种方法,包括:将第一组多个处理器核配置为根据第一能量性能偏好运行,第一组处理器核中的每个处理器核与第一重要性级别相关联;将第二组多个处理器核配置为根据第二能量性能偏好运行,第二组处理器核中的每个处理器核与第二重要性级别相关联,与第二能量性能偏好相比,第一能量性能偏好指示在频率增加时更积极;确定被调度为在计算设备上执行的第一线程的重要性级别;以及调度第一线程以在第一组多个处理器核或第二组多个处理器核中的关联于与第一线程相同的重要性级别的一组多个处理器核上执行。
作为任何上述方法的替代或补充,以下中的任何一个或组合:多个处理器核中的所有处理器核包括一组同质处理器核;方法还包括在计算设备的操作期间动态地调节在多个处理器核中的第一组中包括多个处理器核中的哪些处理器核以及在多个处理器核中的第二组中包括多个处理器核中的哪些处理器核;动态调节包括:确定是否至少阈值数目的具有第一重要性级别的线程正在等待执行,以及响应于至少阈值数目的具有第一重要性级别的线程正在等待执行,将多个处理器核中的第二组中的至少一个处理器核升级为多个处理器核中的第一组中的一个处理器核。
一种计算设备,包括:核配置模块,被配置为将计算设备中的第一组一个或多个处理器核配置为在第一频率范围运行,并且将计算设备中的第二组一个或多个处理器核配置为在第二频率范围运行,第二频率范围包括低于第一频率范围内的频率的频率;线程重要性确定模块,被配置为确定被调度为在计算设备上执行的第一线程的重要性级别,重要性级别是多个不同的重要性级别之一;以及调度器,被配置为基于第一线程的重要性级别来确定第一线程要在第一组一个或多个处理器核还是第二组一个或多个处理器核上执行,以及调度第一线程以在所确定的一组一个或多个处理器核上执行。
作为任何上述计算设备的替代或补充,以下中的任何一个或组合:第一组一个或多个处理器核和第二组一个或多个处理器核中的所有处理器核包括同质处理器核;核划分模块和核配置模块还被配置为在计算设备的操作期间动态地调节在第一组一个或多个处理器核中包括计算设备的哪些处理器核以及在第二组一个或多个处理器核中包括计算设备的哪些处理器核;第一组一个或多个处理器核与多个重要性级别中的第一重要性级别相关联,并且第二组一个或多个处理器核与多个重要性级别中的第二重要性级别相关联,动态调节包括:确定是否至少阈值数目的具有第一重要性级别的线程在第二组一个或多个处理器核上被调度,以及响应于至少阈值数目的具有第一重要性级别的线程在第二组一个或多个处理器核上被调度,将第二组一个或多个处理器核中的至少一个处理器核升级为第一组一个或多个处理器核之一;第一组一个或多个处理器核与多个重要性级别中的第一重要性级别相关联,并且第二组一个或多个处理器核与多个重要性级别中的第二重要性级别相关联,动态调节包括:确定是否至少阈值数目的具有第二重要性级别的线程在第一组一个或多个处理器核上被调度,以及响应于至少阈值数目的具有第二重要性级别的线程在第一组一个或多个处理器核上被调度,将第一组一个或多个处理器核中的至少一个处理器核降级为第二组一个或多个处理器核之一;第一组多个处理器核与多个重要性级别中的第一重要性级别相关联,并且第二组一个或多个处理器核与多个重要性级别中的第二重要性级别相关联,所确定的一组一个或多个处理器核包括第一组一个或多个处理器核,调度器还被配置为:确定在第一组一个或多个处理器核中是否存在可用于执行第一线程的至少一个处理器核,响应于在第一组处理器核中存在可用于执行第一线程的至少一个处理器核,调度第一线程以在第一组一个或多个处理器核上执行,以及响应于确定在第一组处理器核中没有可用于执行第一线程的至少一个处理器核:调度第一线程以在第二组一个或多个处理器核上执行,以及将第一线程被调度以在其上执行的处理器核配置为在第一频率范围运行。
尽管用结构特征和/或方法动作特定的语言描述了本主题,但是应当理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。而是,上述具体特征和动作被公开作为实现权利要求的示例形式。
Claims (15)
1.一种方法,包括:
将设备中的第一组一个或多个处理器核配置为在第一频率范围运行;
将所述设备中的第二组一个或多个处理器核配置为在第二频率范围运行,所述第二频率范围包括比所述第一频率范围内的频率低的频率;
确定被调度为在所述设备上执行的第一线程的重要性级别,所述重要性级别是多个不同的重要性级别之一;
基于所述第一线程的所述重要性级别来确定所述第一线程要在所述第一组一个或多个处理器核还是所述第二组一个或多个处理器核上执行;以及
调度所述第一线程以用于在所确定的一组一个或多个处理器核上执行。
2.根据权利要求1所述的方法,所述两个重要性级别包括重要的重要性级别和不重要的重要性级别,确定所述第一线程要在所述第一组一个或多个处理器核还是所述第二组一个或多个处理器核上执行包括:响应于确定所述第一线程的所述重要性级别是重要的而确定所述第一线程要在所述第一组一个或多个处理器核上执行,以及响应于确定所述第二线程的所述重要性级别是不重要的而确定所述第一线程要在所述第二组一个或多个处理器核上执行。
3.根据权利要求1或2所述的方法,所述第一组一个或多个处理器核和所述第二组一个或多个处理器核中的所有处理器核包括同质处理器核。
4.根据权利要求1至3中任一项所述的方法,还包括在所述设备的操作期间动态地调节所述设备的哪些处理器核被包括在所述第一组一个或多个处理器核中以及所述设备的哪些处理器核被包括在所述第二组一个或多个处理器核中。
5.根据权利要求4所述的方法,所述第一组一个或多个处理器核与所述多个重要性级别中的第一重要性级别相关联,并且所述第二组一个或多个处理器核与所述多个重要性级别中的第二重要性级别相关联,所述动态调节包括:
确定所述设备中是否存在比具有所述第二重要性级别的线程多的具有所述第一重要性级别的并发线程;以及
响应于所述设备中存在比具有所述第二重要性级别的线程多的具有所述第一重要性级别的并发线程,将所述第二组一个或多个处理器核中的至少一个处理器核升级为所述第一组一个或多个处理器核之一。
6.根据权利要求4或权利要求5所述的方法,所述第一组一个或多个处理器核与所述多个重要性级别中的第一重要性级别相关联,并且所述第二组一个或多个处理器核与所述多个重要性级别中的第二重要性级别相关联,所述动态调节包括:
确定至少阈值数目的具有所述第一重要性级别的线程是否在所述第二组一个或多个处理器核上被调度;以及
响应于至少所述阈值数目的具有所述第一重要性级别的线程在所述第二组一个或多个处理器核上被调度,将所述第二组一个或多个处理器核中的至少一个处理器核升级为所述第一组一个或多个处理器核之一。
7.根据权利要求4至6中任一项所述的方法,所述第一组一个或多个处理器核与所述多个重要性级别中的第一重要性级别相关联,并且所述第二组一个或多个处理器核与所述多个重要性级别中的第二重要性级别相关联,所述动态调节包括:
确定至少阈值数目的具有所述第二重要性级别的线程是否在所述第一组一个或多个处理器核上被调度;以及
响应于至少所述阈值数目的具有所述第二重要性级别的线程在所述第一组一个或多个处理器核上被调度,将所述第一组一个或多个处理器核中的至少一个处理器核降级为所述第二组一个或多个处理器核之一。
8.根据权利要求1至7中任一项所述的方法,所述第一组一个或多个处理器核与所述多个重要性级别中的第一重要性级别相关联,并且所述第二组一个或多个处理器核与所述多个重要性级别中的第二重要性级别相关联,所述所确定的一组一个或多个处理器核包括所述第一组一个或多个处理器核,所述方法还包括:
确定在所述第一组一个或多个处理器核中是否存在可用于执行所述第一线程的至少一个处理器核;
调度所述第一线程以用于执行包括:
响应于在所述第一组处理器核中存在可用于执行所述第一线程的至少一个处理器核,调度所述第一线程以用于在所述第一组一个或多个处理器核上执行;以及
响应于确定在所述第一组处理器核中没有可用于执行所述第一线程的至少一个处理器核:
调度所述第一线程以用于在所述第二组一个或多个处理器核上执行;以及
将所述第一线程被调度以在其上执行的处理器核配置为在较高频率范围运行。
9.根据权利要求8所述的方法,所述较高频率范围包括所述第一频率范围。
10.根据权利要求1至9中任一项所述的方法,与所述第一频率范围内的所述频率引起所述第一组一个或多个处理器核进行操作相比,所述第二频率范围内的所述频率引起所述第二组一个或多个处理器核如由每瓦特性能确定的更有效地进行操作。
11.一种计算设备,包括:
多个处理器核;以及
计算机可读存储介质,具有存储于其上的多个指令,所述多个指令响应于由所述多个处理器核的执行而引起所述多个处理器核执行包括以下各项的操作:
将所述多个处理器核中的第一组配置为根据第一能量性能偏好运行,所述第一组处理器核中的每个处理器核与第一重要性级别相关联;
将所述多个处理器核中的第二组配置为根据第二能量性能偏好运行,所述第二组处理器核中的每个处理器核与第二重要性级别相关联,与所述第二能量性能偏好相比,所述第一能量性能偏好指示在频率增加时更积极;
确定被调度为在所述计算设备上执行的第一线程的重要性级别;以及
调度所述第一线程以用于在所述第一组多个处理器核或所述第二组多个处理器核中的关联于与所述第一线程相同的重要性级别的一组多个处理器核上执行。
12.根据权利要求11所述的计算设备,所述多个处理器核中的所有处理器核包括一组同质处理器核。
13.根据权利要求11或权利要求12所述的计算设备,所述操作还包括在所述计算设备的操作期间动态地调节所述多个处理器核中的哪些处理器核被包括在所述多个处理器核中的所述第一组中以及所述多个处理器核中的哪些处理器核被包括在所述多个处理器核中的所述第二组中。
14.根据权利要求13所述的计算设备,所述动态调节包括:
确定至少阈值数目的具有所述第一重要性级别的线程是否正在等待执行;以及
响应于至少所述阈值数目的具有所述第一重要性级别的线程正在等待执行,将所述多个处理器核中的所述第二组中的至少一个处理器核升级为所述多个处理器核中的所述第一组中的一个处理器核。
15.一种计算设备,包括:
核配置模块,被配置为将所述计算设备中的第一组一个或多个处理器核配置为在第一频率范围运行,并且将所述计算设备中的第二组一个或多个处理器核配置为在第二频率范围运行,所述第二频率范围包括比所述第一频率范围内的频率低的频率;
线程重要性确定模块,被配置为确定被调度为在所述计算设备上执行的第一线程的重要性级别,所述重要性级别是多个不同的重要性级别之一;以及
调度器,被配置为基于所述第一线程的所述重要性级别来确定所述第一线程要在所述第一组一个或多个处理器核还是所述第二组一个或多个处理器核上执行,以及调度所述第一线程以用于在所确定的一组一个或多个处理器核上执行。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662417837P | 2016-11-04 | 2016-11-04 | |
US62/417,837 | 2016-11-04 | ||
US15/439,684 | 2017-02-22 | ||
US15/439,684 US10372494B2 (en) | 2016-11-04 | 2017-02-22 | Thread importance based processor core partitioning |
PCT/US2017/058928 WO2018085167A1 (en) | 2016-11-04 | 2017-10-30 | Thread importance based processor core partitioning |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109906421A true CN109906421A (zh) | 2019-06-18 |
CN109906421B CN109906421B (zh) | 2023-12-12 |
Family
ID=62063891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780068016.8A Active CN109906421B (zh) | 2016-11-04 | 2017-10-30 | 基于线程重要性的处理器核划分 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10372494B2 (zh) |
EP (1) | EP3535641B1 (zh) |
CN (1) | CN109906421B (zh) |
WO (1) | WO2018085167A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347486A (zh) * | 2019-07-02 | 2019-10-18 | Oppo广东移动通信有限公司 | 应用程序的线程分配方法、装置、设备及可读存储介质 |
CN110347508A (zh) * | 2019-07-02 | 2019-10-18 | Oppo广东移动通信有限公司 | 应用程序的线程分配方法、装置、设备及可读存储介质 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11144085B2 (en) * | 2017-06-23 | 2021-10-12 | Intel Corporation | Dynamic maximum frequency limit for processing core groups |
US10210762B1 (en) * | 2017-09-27 | 2019-02-19 | Denso International America, Inc. | Vehicle-to-vehicle communications management for disabled vehicle |
US10761586B2 (en) * | 2018-01-11 | 2020-09-01 | Intel Corporation | Computer performance and power consumption optimization |
US11533272B1 (en) * | 2018-02-06 | 2022-12-20 | Amesite Inc. | Computer based education methods and apparatus |
US10996725B2 (en) * | 2018-08-21 | 2021-05-04 | Nvidia Corporation | Power management in a multiple-processor computing device |
US11269396B2 (en) | 2018-09-28 | 2022-03-08 | Intel Corporation | Per-core operating voltage and/or operating frequency determination based on effective core utilization |
CN110069347B (zh) * | 2019-04-29 | 2022-10-25 | 河南科技大学 | 一种基于过程重要度的线程划分方法 |
US11314558B2 (en) * | 2019-07-23 | 2022-04-26 | Netapp, Inc. | Methods for dynamic throttling to satisfy minimum throughput service level objectives and devices thereof |
US20210224128A1 (en) * | 2020-12-24 | 2021-07-22 | Intel Corporation | Technologies for managing workloads in processor cores |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101076770A (zh) * | 2004-09-28 | 2007-11-21 | 英特尔公司 | 根据可用并行数目改变每条指令能量的方法和设备 |
CN101981529A (zh) * | 2008-03-28 | 2011-02-23 | 微软公司 | 功率知晓线程调度和处理器的动态使用 |
US20120284729A1 (en) * | 2011-05-03 | 2012-11-08 | Microsoft Corporation | Processor state-based thread scheduling |
Family Cites Families (26)
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 |
US7711966B2 (en) | 2004-08-31 | 2010-05-04 | Qualcomm Incorporated | Dynamic clock frequency adjustment based on processor load |
US7526661B2 (en) * | 2004-12-02 | 2009-04-28 | Intel Corporation | Performance state-based thread management |
KR101108397B1 (ko) | 2005-06-10 | 2012-01-30 | 엘지전자 주식회사 | 멀티-코어 프로세서의 전원 제어 장치 및 방법 |
US20060294401A1 (en) | 2005-06-24 | 2006-12-28 | Dell Products L.P. | Power management of multiple processors |
US20080127192A1 (en) | 2006-08-24 | 2008-05-29 | Capps Louis B | Method and System for Using Multiple-Core Integrated Circuits |
US7992151B2 (en) | 2006-11-30 | 2011-08-02 | Intel Corporation | Methods and apparatuses for core allocations |
US7665000B2 (en) | 2007-03-07 | 2010-02-16 | Intel Corporation | Meeting point thread characterization |
US20090199019A1 (en) | 2008-01-31 | 2009-08-06 | Nokia Corporation | Apparatus, method and computer program product for reducing power consumption based on relative importance |
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 |
US20090288092A1 (en) | 2008-05-15 | 2009-11-19 | Hiroaki Yamaoka | Systems and Methods for Improving the Reliability of a Multi-Core Processor |
US8892916B2 (en) | 2008-08-06 | 2014-11-18 | International Business Machines Corporation | Dynamic core pool management |
EP2435914B1 (en) | 2009-05-26 | 2019-12-11 | Telefonaktiebolaget LM Ericsson (publ) | Method and scheduler in an operating system |
US8527796B2 (en) | 2009-08-24 | 2013-09-03 | Intel Corporation | Providing adaptive frequency control for a processor using utilization information |
EP2362297B1 (en) | 2010-02-25 | 2014-05-14 | Telefonaktiebolaget L M Ericsson (publ) | Technique for selecting a frequency of operation in a processor system |
US8381004B2 (en) | 2010-05-26 | 2013-02-19 | International Business Machines Corporation | Optimizing energy consumption and application performance in a multi-core multi-threaded processor system |
US8510749B2 (en) | 2010-05-27 | 2013-08-13 | International Business Machines Corporation | Framework for scheduling multicore processors |
CN103229123B (zh) | 2010-11-25 | 2016-08-31 | 飞思卡尔半导体公司 | 在多核处理器内管理功率的方法及装置 |
CN102004543B (zh) | 2010-11-29 | 2013-08-07 | 华为技术有限公司 | 一种实现cpu节能的方法及装置 |
WO2013040762A1 (en) | 2011-09-21 | 2013-03-28 | Empire Technology Development Llc | Multi-core system energy consumption optimization |
EP2847674A4 (en) | 2012-05-09 | 2016-01-27 | Intel Corp | PLANNING TASKS AMONG PROCESSORS C URS |
US8984200B2 (en) | 2012-08-21 | 2015-03-17 | Lenovo (Singapore) Pte. Ltd. | Task scheduling in big and little cores |
US10386900B2 (en) | 2013-09-24 | 2019-08-20 | Intel Corporation | Thread aware power management |
WO2015163897A1 (en) | 2014-04-24 | 2015-10-29 | Empire Technology Development Llc | Core prioritization for heterogeneous on-chip networks |
US9424092B2 (en) | 2014-09-26 | 2016-08-23 | Microsoft Technology Licensing, Llc | Heterogeneous thread scheduling |
US20160210174A1 (en) | 2015-01-15 | 2016-07-21 | Microsoft Corporation | Hybrid Scheduler and Power Manager |
-
2017
- 2017-02-22 US US15/439,684 patent/US10372494B2/en active Active
- 2017-10-30 EP EP17805317.9A patent/EP3535641B1/en active Active
- 2017-10-30 CN CN201780068016.8A patent/CN109906421B/zh active Active
- 2017-10-30 WO PCT/US2017/058928 patent/WO2018085167A1/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101076770A (zh) * | 2004-09-28 | 2007-11-21 | 英特尔公司 | 根据可用并行数目改变每条指令能量的方法和设备 |
CN101981529A (zh) * | 2008-03-28 | 2011-02-23 | 微软公司 | 功率知晓线程调度和处理器的动态使用 |
US20120284729A1 (en) * | 2011-05-03 | 2012-11-08 | Microsoft Corporation | Processor state-based thread scheduling |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347486A (zh) * | 2019-07-02 | 2019-10-18 | Oppo广东移动通信有限公司 | 应用程序的线程分配方法、装置、设备及可读存储介质 |
CN110347508A (zh) * | 2019-07-02 | 2019-10-18 | Oppo广东移动通信有限公司 | 应用程序的线程分配方法、装置、设备及可读存储介质 |
CN110347486B (zh) * | 2019-07-02 | 2023-09-15 | Oppo广东移动通信有限公司 | 应用程序的线程分配方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3535641B1 (en) | 2021-07-28 |
CN109906421B (zh) | 2023-12-12 |
EP3535641A1 (en) | 2019-09-11 |
US10372494B2 (en) | 2019-08-06 |
US20180129534A1 (en) | 2018-05-10 |
WO2018085167A1 (en) | 2018-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109906421A (zh) | 基于线程重要性的处理器核划分 | |
US11586451B2 (en) | Resource management with dynamic resource policies | |
KR102427067B1 (ko) | 이종 스레드 스케줄링 | |
CN109906437A (zh) | 基于线程重要性的处理器核停止和频率选择 | |
CN108009006B (zh) | I/o请求的调度方法及装置 | |
US8418177B2 (en) | Virtual machine and/or multi-level scheduling support on systems with asymmetric processor cores | |
CN107111553B (zh) | 用于在多集群异构处理器架构中提供动态高速缓存扩展的系统和方法 | |
US20160248266A1 (en) | Heterogeneous Battery Cell Charging | |
CN109144716A (zh) | 基于机器学习的操作系统调度方法及装置、设备 | |
CN109983419B (zh) | 动态能量存储设备放电 | |
US10037225B2 (en) | Method and system for scheduling computing | |
CN109983421A (zh) | 动态能量存储设备充电 | |
US10048986B2 (en) | Method and device for allocating browser processes according to a selected browser process mode | |
KR20190084977A (ko) | 동적 외부 전력 자원 선택 | |
US11422857B2 (en) | Multi-level scheduling | |
WO2023174037A1 (zh) | 资源调度方法、装置、系统、设备、介质和程序产品 | |
US11126324B2 (en) | Tile interface and launchpad system | |
WO2023020177A1 (zh) | 一种任务调度方法、游戏引擎、设备及存储介质 | |
CN109634812A (zh) | Linux系统的进程CPU占用率控制方法、终端设备及存储介质 | |
US11003500B2 (en) | Workload/converged infrastructure asset allocation system | |
CN107870809B (zh) | 应用关闭方法、装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |