CN108984282B - 具有闭环性能控制器的amp体系结构的调度器 - Google Patents

具有闭环性能控制器的amp体系结构的调度器 Download PDF

Info

Publication number
CN108984282B
CN108984282B CN201810562661.1A CN201810562661A CN108984282B CN 108984282 B CN108984282 B CN 108984282B CN 201810562661 A CN201810562661 A CN 201810562661A CN 108984282 B CN108984282 B CN 108984282B
Authority
CN
China
Prior art keywords
thread
core
thread group
threads
processor
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
Application number
CN201810562661.1A
Other languages
English (en)
Other versions
CN108984282A (zh
Inventor
J·C·安德勒斯
J·G·多西
J·M·麦吉
D·A·驰米恩
C·德拉克洛普特德昌特拉克
B·R·海克
A·温卡塔拉曼
A·多罗费弗
N·R·甘博
R·A·布雷恩
C·皮斯托尔
J·S·艾斯迈尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of CN108984282A publication Critical patent/CN108984282A/zh
Application granted granted Critical
Publication of CN108984282B publication Critical patent/CN108984282B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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 load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/20Cooling means
    • G06F1/206Cooling means comprising thermal management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/268Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)

Abstract

本发明题为“具有闭环性能控制器的AMP体系结构的调度器”。本发明公开了用于在具有至少两种不同核心类型的处理器(诸如非对称多处理系统)上调度线程的系统和方法。每个核心类型可在多个可选择的电压和频率缩放(DVFS)状态下运行。来自多个进程的线程可分组到线程组中。为线程组的线程积累执行度量,并将其馈送到线程组的多个可调控制器中。闭环性能控制(CLPC)系统确定线程组的控制工作量,并将控制工作量映射到推荐的核心类型和DVFS状态。闭环热和功率管理系统可以限制CLPC针对线程组所确定的控制工作量,并限制系统的功率、核心类型和DVFS状态。延迟中断可用于提高性能。

Description

具有闭环性能控制器的AMP体系结构的调度器
相关专利申请
本专利申请要求杰里米C安德鲁斯于2017年6月4日提交的,标题为“SCHEDULERFOR AMP ARCHITECTURE”的美国临时专利申请62/514,930的优先权并且全文以引用方式并入本文,其内容与本公开一致。
本专利申请还要求杰里米C安德鲁斯于2018年1月12日提交的,标题为“SCHEDULERFOR AMP ARCHITECTURE”的美国专利申请15/870,763的优先权并且以与本公开一致的程度以引用方式全文并入本文。
本专利申请还要求杰里米C安德鲁斯于2018年1月12日提交的,标题名为“SCHEDULERFOR AMP ARCHITECTURE WITH CLOSED LOOP PERFORMANCE CONTROLLER USINGSTATIC AND DYNAMIC THREAD GROUPING”的美国专利申请15/870,764的优先权并且以与本公开一致的程度以引用方式全文并入本文。
本专利申请还要求杰里米C安德鲁斯于2018年1月12日提交的,标题为“SCHEDULING OF WORK INTERVAL OBJECTS IN AN AMP ARCHITECTURE USING A CLOSEDLOOP PERFORMANCE CONTROLLER”的美国专利申请15/870,766的优先权并且以与本公开一致的程度以引用方式全文并入本文。
本申请还要求杰里米C安德鲁斯于2018年1月12日提交的,标题为“SCHEDULER FORAMP ARCHITECTURE USING A CLOSED LOOP PERFORMANCE AND THERMAL CONTROLLER”的美国专利申请15/870,760的优先权并且以与本公开一致的程度以引用方式全文并入本文。
以下美国专利申请以引用方式全文并入本文,其程度与本专利申请一致:
(1)约翰G多尔西于2016年9月23日提交的标题为“PROCESSOR UNIT EFFICIENCYCONTROL”的美国专利申请15/275,213;
(2)詹姆斯M马吉于2014年12月19日提交的美国专利申请序列号14/576,963,标题为“METHOD AND APPARATUS FOR ACTIVITY BASED EXECUTION SCHEDULING”的美国专利申请序列号14/576,963;并且
(3)罗塞尔A布莱恩于2015年6月5日提交的,标题为“SCHEDULER AND CPUPERFORMANCE CONTROLLER COOPERATION”的美国专利申请序列号14/732,266。
技术领域
本公开整体涉及处理器上的调度线程领域,更具体地讲,涉及用于非对称多核心处理器体系结构的调度器。
背景技术
多核心处理器是具有两个或更多个称为“核心”的独立处理单元的单个计算部件。核心是读取和执行程序指令的单位。单个处理器可以同时在独立的核心上运行多个指令,从而提高适合于并行计算的程序的总体速度。可将多个核心结合到单个集成电路上。有两种主要类型的多核心处理器:对称多核心处理器(SMP)和非对称多核心处理器(AMP)。对称多处理器(SMP)包括由单个操作系统实例控制的两个或更多个相同的处理器,该单个操作系统实例相同地处理所有处理器,不保留任何特殊用途。对称多核心处理器具有相同核心类型的多个核心。非对称多核心处理器具有多个核心,其可为彼此不同的体系结构。每个核心可或可不运行操作系统。
AMP可具有比第二组核心更有效的第一组核心。第二组核心可被设计用于性能。效率涉及每个指令处理消耗的最小能量。性能涉及每单位时间处理的最大指令数。在现有技术中,为了获得效率,一些核心将被设置为空闲或“黑暗”(关闭,不处理指令)。需要大量的时间使核心回到处理状态,这会不利地影响性能。
在现有技术中,当系统以高性能运行并且消耗大量能量时,系统会经历“电池电量下降”,其中系统可被重置,因为在例如存储单元或电池中未存储足够能量以保持系统通电。此外,在具有主动散热的便携式设备中,在性能模式下运行持续一段时间的系统可能变得太热而不能在合理的时间内冷却,从而导致性能不佳和过热,并且用户体验较差。
发明内容
本文所述的系统和方法的目的包括使用线程组的性能度量的测量来控制系统性能,以便在具有多个核心类型和每个核心类型中的一个或多个核心的多处理系统中针对核心的一个或多个集群对调度线程和动态电压和频率缩放(DVFS)状态进行联合决策。性能度量被馈送到闭环控制系统,该系统生成用于联合决定核心要运行的速度以及线程组线程运行的核心类型的输出。线程组包含一个或多个线程,这些线程基于用于确定线程组中线程的共同目标或目的的一个或多个特征进行分组。本文所述的系统和方法的目的包括最大限度地减少性能工作负载的线程调度延迟,确保性能工作负载始终找到性能核心,最大限度地提高性能工作负载的吞吐量,并确保效率工作负载始终找到有效的核心。目的还可以包括确保线程入队用于处理时不对核心断电。另一个目的是在超额订阅性能核心时卸载性能工作负载。线程被系统地引导至工作负载的正确类型的核心。
公开了在具有至少两种不同核心类型的处理器上的调度线程的系统和方法,每个不同的核心类型各自具有该类型的一个或多个核心,并且调度器可调度至少两种不同的核心类型之间的线程。每个核心类型可具有不同的动态电压和频率缩放(DVFS)状态。处理器可以是具有相同设计的多个核心的对称多处理系统(SMP),但核心的第一集群在第一构型中运行,并且核心的第二集群在第二构型中运行。处理器可以是具有至少两种不同的核心类型的非对称多处理系统(AMP),诸如一个或多个性能核心和一个或多个效率核心。每个核心类型可在多个可选择的电压和频率设置下运行,并且两种核心类型可同时运行。
可以将进程的线程一起分组到相关线程的线程组中。通常,线程组旨在将工作分组在一起,以实现共同的目标,目的或类型的工作。基于线程组中线程的执行度量的样本,闭环性能控制器(CLPC)可生成控制工作量,该控制工作量表示线程组应接收的性能或效率的量,以满足线程组的性能目标。CLPC可针对在处理器核心上活动的多个线程组中的每一个确定用于线程组的控制工作量。每个线程组的控制工作量可映射到性能映射,该性能映射基于针对线程组计算的控制工作量,针对线程组推荐核心类型和动态电压和频率缩放(DVFS)状态。从活动线程组,可以针对第一类型的核心(例如,性能核心)推荐的所有线程确定最大DVFS状态。可以针对推荐为第二核心类型(例如,效率核心类型)的所有活动线程组确定最大DVFS状态。调度器可以将针对每个核心类型设置DVFS状态与调度活动线程组中的线程进行协调。
在实施方案中,CLPC中的控制工作量限制器(CEL)可产生控制工作量限制,其可限制从CLPC输出的控制工作量。控制工作量限制可基于快速裸片温度,在短时间内消耗的峰值功率,在多个功率区中的任一个中消耗的平均功率,设备外部的表面温度,硬件调节事件计数或其他控制度量。
线程最初可以分组为默认的线程组,诸如将应用程序的线程分组在一起,称为“联盟”。联盟是应用程序的一组密切相关的任务/进程,该应用程序由线程组成,例如web浏览器以及与web浏览器相关联的应用程序扩展。可通过启动服务守护进程,应用程序编程接口(API)或框架将任务组合到单个联盟中。线程组状态与每个联盟相关联。线程分组可以由一组线程的手动构建体显式定义。某些类型的工作负载,例如音频处理服务,已完全了解其组织,并可以相应地对线程分组。线程可以通过利用现有内核交互来隐式地加入线程组。例如,当线程经由进程间通信进行通信时,它们可任选地传递引用接收人加入的线程组的凭证。当第一线程唤醒第二线程以代表第一线程执行工作时,第二线程可以采用第一线程的线程组。当第一线程使得第二线程可运行时,第二线程可以采用第一线程的线程组。线程可以根据线程将执行的工作类型分组,如启动线程的守护进程所指示的那样。可以在源代码,编译代码或封装到可交付用于安装的代码中指定显式线程分组。用于工作间隔对象的显式线程分组可以在源代码,编译代码或用于安装的可交付封装中指定。
工作间隔对象(WIO)是用于表示每个周期都具有截止日期的周期性工作的对象。WIO拥有令牌和指定时间间隔,用于工作的一个实例。WIO可以与线程组关联。可以专门为WIO创建线程组,或者WIO可以与现有线程组相关联。要实现共同目标,要在指定的时间间隔内执行的工作的线程,可以加入WIO的线程组。当用户空间进程通过特定的系统调用请求工作间隔对象时,可以创建工作间隔对象。操作系统的内核可以借助系统调用当前和自动创建工作间隔对象。例如,工作间隔对象可以是例如表示一个或多个线程的对象,该线程合成多个音频源并且将用于回放的音频都在固定时间段(工作间隔)内编码。执行具有工作间隔对象的目的的工作的线程可以选择进入工作间隔对象线程组。通过选择进入线程执行的工作被装入工作间隔对象。接收包含对线程组的引用的凭证的线程可与凭证中引用的线程组进行分组。凭证是经由进程间通信(IPC)从第一线程T1发送到第二线程T2的消息中的属性集合。线程T1置于凭证中的一个属性是T1当前所属的线程组。第二线程T2从T1接收IPC消息。作为消息接收的一部分,发送我的T1的凭证被“兑换”(或采纳)。兑换凭证意味着处理与凭证关联的所有属性,并将指针置于线程上的凭证。线程T2现在可以被视为在从线程T1接收的凭证的上下文中运行。作为“兑换”凭证的动作的一部分,操作系统内核中的凭证管理器通知线程T1将凭证中的线程组属性发送到线程2,并且自动将线程T2加入到凭证中指定的线程组。线程T2已完成处理来自线程T1的消息之后,线程T1可以选择丢弃凭证。丢弃(或“丢下”)凭证导致线程T2离开线程T1的线程组,并导致线程T2重新加入到“归属地”线程组(与其中T2正在运行的任务相关联的线程组)。然而,在线程T2丢下凭证之前,线程T2也可以沿同一凭证传送到另一个线程/进程线程T3。因为凭证包含线程组属性,它指向线程T1的线程组,当线程T3从线程T2收到消息并采纳/兑换凭证时,线程T3将加入T1的线程组。线程T3将随后作为T1的线程组的一部分,只要该凭证由线程T3采纳即可。线程T2和T3两者一丢下该凭证就将离开线程T1的线程组。这可以无限期地重复。因为内核凭证管理器控制凭证的内容,并且凭证将自动发送作为基本进程间通信机制的一部分,所以当两个进程传达处理/接收的线程时,消息将自动加入发送消息的进程的线程组。在实施方案中,在可运行之前,例如在线程接收凭证时,可以将线程回溯为与凭证中引用的线程组进行分组。
处理器的调度器可以根据针对线程组的推荐核心类型和推荐DVFS状态调度线程组的线程。核心类型的推荐DVFS可以由找到核心类型的最大DVFS状态的CLPC提高,超过在系统上活动的所有线程组。推荐的DVFS状态可受控制工作量限制器(CEL)的限制,限制DVFS状态和/或将执行线程的核心类型的核心数量。
核心类型可具有相关联的中断和中断定时器,该中断和中断定时器可用于延迟线程在某些条件下执行。例如,如果线程有资格在性能核心上运行,但没有空闲的性能核心,则线程可能被调度用于效率核心。可以针对线程对定时器编程,并且线程可以延迟运行。如果定时器过期,则会触发中断,并且性能合格线程在效率核心上运行。但是,如果性能核心在中断时间到期之前可用于线程执行,则可以取消定时器,并且线程可以在性能核心上执行。
在第一实施方案中,在具有处理器的系统上运行线程的方法可包括将一个或多个进程的线程分组到一个或多个线程组中,所述处理器具有一个或多个核心的第一集群和一个或多个核心的第二集群。第一线程组的第一线程可在第一集群类型的核心上运行。第一线程的多个线程执行度量可与第一线程组的多个线程执行度量结合。可至少部分地基于所述多个线程组度量的样本来为第一线程组确定第一控制工作量。可为第一线程组类型推荐第一或第二核心类型,可推荐针对第一线程组的DVFS状态。在实施方案中,控制工作量可被映射到由控制工作量表征的核心集群和DVFS状态的性能映射。在实施方案中,处理器可包括非对称多处理系统(AMP),所述系统具有第一核心类型的性能核心(P核心)和第二核心类型的有效核心(E核心)。可以执行来自第二线程组的线程,并且可将与第二线程的执行相关联的性能度量结合到第二线程组的执行度量。可至少部分地基于第二线程组的线程执行度量的样本来为第二线程组确定第二控制工作量。响应于确定第一线程组的第一推荐核心集群和第二线程组的第二推荐核心集群是相同的核心集群,最大DVFS状态可被计算为第一推荐DVFS状态和第二推荐DVFS状态的最大值,并且推荐用于第一线程组和第二线程组的核心集群的DVFS状态可被设置为计算的最大DVFS状态。响应于确定第一线程组的第一推荐核心集群和第二线程组的第二推荐核心集群是不同的核心集群,则可将第一推荐核心集群的DVFS状态设置为第一推荐DVFS状态,并且可将第二推荐核心集群的DVFS状态设置为第二推荐DVFS状态。线程执行度量可以周期性地或响应于异步事件来确定。线程组执行度量的样本可为线程组的CLPC的可调控制器输入。控制工作量可映射到推荐的核心类型和DVFS状态。如果控制工作量映射到性能映射的重叠部分,其中可推荐P核心或E核心,则调度器或CLPC可以至少部分地基于线程执行的工作类型来确定是否推荐P核心或E核心。例如,可以向P核心推荐图形呈现。I/O操作可推荐给E核心。在实施方案中,线程组已驻留在核心类型和/或DVFS状态的时间可被视为确定核心类型和/或DVFS状态以推荐用于线程组。在实施方案中,其中第一类型的核心被超额订阅,并且第二类型的核心是空闲的,调度器可调度符合第一核心类型的线程组的线程以用于在第二核心类型上执行。第一类型的核心可检测到符合在第一类型的核心上执行的线程实际上在第二类型的核心上运行,并且第一类型的核心正处于空闲(例如,在转变为空闲状态的过程中)。线程可以在第一类型的现在空闲核心上运行。
在第二实施方案中,在包括非对称多核心处理器的系统上执行将线程分组为线程组的方法,所述非对称多核心处理器具有至少两种不同的核心类型的多个核心。该方法包括启动包括多个进程的应用程序并将所述多个进程中的每一个分配给第一线程组。响应于确定多个进程中的进程致使要生成工作间隔对象,该进程的线程可被分配给不同于第一线程组的第二线程组。执行来自第一线程组的至少一个线程。确定第一线程组中的线程的多个线程执行度量,并且至少部分地基于第一线程组的线程执行度量将第一线程组的线程的处理器核心类型推荐给调度器。在实施方案中,响应于确定所述多个线程中的线程引起要生成工作间隔对象,所述线程可被分配给不同于第一线程组的第二线程组。执行来自第二线程组的至少一个线程,并且确定第二组中线程的多个线程执行度量。至少部分地基于第二线程组的线程执行度量的样本将第二线程组的线程的处理器核心类型推荐给调度器。在实施方案中,该方法还可包括接收来自第一线程组的线程选择进入第二线程组的指示,执行选择进入第二线程组中的线程,并且将来自第一组的线程的选择进入第二线程组的多个线程执行度量归于第二组。在实施方案中,该方法还可包括接收来自第一线程组的选择进入第二线程组的线程选择退出第二线程组的指示,将选择退出的线程分配到第一线程组,执行选择退出线程,并将选择退出第二线程组的线程的多个线程执行度量归于第一线程组。
对线程分组用于在AMP上执行的方法可包括确定所述应用程序指示所述多个进程中的进程将被分配到与第一和第二线程组不同的第三线程组,执行来自第三线程组的至少一个线程,确定所述第三组中的线程的多个线程执行度量,并且至少部分地基于所述第三线程组的线程执行度量的样本来向调度器推荐针对第三线程组的线程的处理器核心类型。
对线程分组用于在AMP上执行的方法可包括确定多个进程中的进程执行工作的类型,以及将进程的线程分配给第四线程组,执行第四线程组中的至少一个线程,确定第四组中的线程的多个线程执行度量,并且至少部分地基于第四线程组的线程执行度量的样本来向调度器推荐针对第四线程组的线程的处理器核心类型。第四个线程组可以包括来自守护进程的线程。
对线程分组用于在AMP上执行的方法可包括,响应于确定来自第一线程组的线程已使得第五线程组中的线程被唤醒和/或可由调度器运行,将唤醒和/或使得可运行的线程从第五线程组分配给第一线程组。该方法还可包括执行至少一个线程,确定第一线程组中的线程的多个线程执行度量,并且至少部分地基于第一线程组的线程执行度量的样本向调度器推荐针对第一线程组的线程的处理器核心类型。
对线程分组用于在AMP上执行的方法可包括,响应于确定来自第一线程组的线程已接收代表另一线程执行工作的凭证,该凭证指示第六线程组,将该线程分配给第六个线程组。所述方法还可包括执行来自所述第六线程组的至少一个线程,确定所述第六组的线程的多个线程执行度量,并且至少部分地基于所述第六线程组的线程执行度量来向调度器推荐针对第六线程组中的线程的处理器核心类型。该方法还可包括确定接收到凭证并代表另一个线程执行工作的线程已经代表另一个线程完成该工作,并将线程分配回第一个线程组。
对线程分组用于在AMP上执行的方法可包括启动包括多个进程的应用程序,将所述多个进程中的每一个分配第一线程组,由守护进程启动第一线程组中的进程的至少一个线程,由守护进程将至少一个线程分配到和与第二线程组相关联的第二守护进程相关联的第二线程组,执行第二线程组的至少一个线程,确定第二线程组中的线程的多个线程执行度量,并且至少部分基于第二线程组的线程执行度量的样本来向调度器推荐针对第二线程组的线程的处理器核心类型。
在第三实施方案中,使用AMP上的工作间隔对象处理工作的方法可包括创建与具有第一线程组标识符的第一线程组相关联的工作间隔对象。与工作间隔对象相关联的一个或多个线程可在所识别的时间间隔内朝向工作间隔对象的共同目标执行工作。该方法还可包括从与具有第二线程组标识符的第二线程组相关联的进程的线程接收请求以采纳第一线程组标识符,响应于确定线程采纳第一线程组标识符,将该线程执行的工作的量度归为第一线程组标识符,以及至少部分地基于与第一线程组标识符相关联的工作度量的样本确定处理器核心类型,以运行具有第一线程组标识符的一个或多个线程。响应于调用守护进程或操作系统服务,可以实例化工作间隔对象。在实施方案中,可响应于应用程序调用应用程序编程接口(API)或框架来实例化工作间隔对象。所述方法还可包括接收与所述线程相关联的请求以选择退出所述第一线程组,并且将所述线程与所述第二线程组相关联。在实施方案中,该方法还可包括将由线程执行的工作的度量归结为第二线程组,并且至少部分地基于与第二线程组标识符相关联的工作度量的样本来确定处理器类型以运行第二线程组的一个或多个线程。
在第四实施方案中,在具有第一集群类型和第二集群类型的处理器上调度线程的方法包括:确定处理器的控制工作量和确定用于核心的第一集群或第二集群中的至少一个的DVFS状态,其中第一集群类型具有一个或多个核心,第二集群类型具有一个或多个核心。控制工作量限制可与包括用于核心的第一和第二集群中的每一个的多个DVFS状态的功率映射结合使用。功率映射可通过控制工作量限制进行索引。可接收到调度用于执行的线程可在不同于使用控制工作量限制所确定的DVFS状态的DVFS状态下的核心的第一集群或第二集群中的至少一个上运行的推荐。DVFS状态可针对核心的第一集群或第二集群中的至少一个设置为使用控制工作量限制确定的DVFS状态。在实施方案中,该方法还可包括确定处理器中的第一预先确定的时间段耗散的总能量大于处理器的瞬时功率目标。至少部分地取决于第一预先确定时间段内处理器中耗散的总能量确定处理器的控制工作量限制。在实施方案中,可响应于确定处理器在第二时间段消耗的平均功率大于处理器的平均功率目标,或者每个指令消耗的平均能量大于预先确定的时间段内预先确定的效率阈值中的一个或多个来减少控制工作量限制。在实施方案中,系统可监测多个功率区,每个功率区各自具有低通滤波器,所述低通滤波器包括功率目标、时间常数、功率δ(delta)和滤波器算法。在第一时间,滤波后的功率减去功率区的功率δ可小于功率区的功率目标。在晚于第一时间的第二时间,滤波后的功率可超过功率区的目标功率。在实施方案中,系统可继续对功率区的功率进行监测和滤波,所述功率减去功率区的功率δ超过其功率目标。可以继续减少控制工作量限制,直到功率区的过滤后的功率跟踪到功率区的目标功率为止。在实施方案中,响应于处理器的测量或估计电流在预先确定的时间段内超过电流限制,或者指令被阻止执行的数量在预先确定的时间段内超过峰值调节速率目标,可减小控制工作量限制,其中阻止指令的调节由硬件完成。在实施方案中,至少部分地基于核心的第一集群或第二集群中的至少一个的最大快速裸片(die)温度限制来确定最大控制工作量。在实施方案中,核心可以被屏蔽而不会执行。在实施方案中,可限制核心可被屏蔽的速率。所述处理器可包括AMP处理器,所述AMP处理器具有P核心的第一核心集群和E核心的第二核心集群。
处理系统可包括具有至少两个核心类型和每个核心类型的至少一个核心的处理器。该系统还可具有用于每个核心类型的温度传感器。系统还可以具有包括每个核心类型的调度队列的调度器。CLPC可以确定线程组的线程的控制工作量,并为线程组的线程推荐核心类型和DVFS状态。闭环热管理系统可至少部分地基于每个核心类型的温度传感器来确定控制工作量限制。该系统可包括片上系统(SoC)。温度传感器中的一个或两个可为虚拟传感器。
在第五实施方案中,在具有包含多个性能核心(P核心)和多个有效核心(E核心)的非对称多处理系统(AMP)的计算系统上执行的方法可包括确定由PC推荐用于处理的线程是否被调度用于由AMP的PC来处理,并且响应于确定没有P核心可用于处理线程以及E核心可用于处理线程:配置中断控制器的定时器以在预先确定的延迟值到期后生成中断。该方法还可包括响应于在定时器到期之前确定PC可用于处理线程,取消中断并由可用的PC处理线程。在实施方案中,该方法还可包括响应于PC变得可用于处理线程之前定时器到期:生成中断以唤醒E核心并由E核心处理线程。该方法可另外包括确定PC已可用,配置中断控制器的定时器以生成立即中断以唤醒PC,生成中断以唤醒PC并由可用的PC处理线程。
在AMP处理器上调度线程的方法可包括确定是否已推荐线程由E核心进行处理以及线程可由调度器运行。响应于确定E核心是空闲的,配置中断控制器的定时器以生成立即中断来唤醒E核心,否则配置定时器中断控制器以生成延迟中断。所述方法还可包括响应于所述中断控制器生成中断,唤醒所述E核心并由所述E核心处理所述线程。该方法还可包括确定是否已推荐线程由PC进行处理,以及该线程可再次由调度器运行。该方法可包括配置中断控制器的定时器以生成立即中断来唤醒PC。响应于中断控制器生成中断,该方法可包括唤醒PC并由PC处理线程。
在一个实施方案中,非暂态计算机可读介质可以存储可执行指令,该可执行指令在由处理系统执行时,可以执行上述任何功能。
在又一个实施方案中,联接到编程有可执行指令的存储器的处理系统可以在执行该指令时,执行上述任何功能。
本文所述的一些实施方案包括环境中的一个或多个应用编程接口(API),其中调用程序代码与通过一个或多个接口而受调用的其他程序代码进行交互。各种功能调用、消息或其他类型的调用还可包括各种参数,这些调用可以经由调用程序和被调用代码之间的APl而传输。此外,API可以给调用程序代码提供使用在API中定义的、并在被调用程序代码中实现的数据类型或类别的能力。
通过附图并且通过详细描述,其他特征和好处将显而易见。
附图说明
本发明的实施方案以举例的方式进行说明,而不仅限于各个附图的图示,在附图中类似的附图标号是指类似的元件。
图1以框图形式示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统的概述,每个核心类型均具有一个或多个核心。
图2以框图形式示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统的详细视图,每个核心类型均具有一个或多个核心。
图3以框图形式示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统的闭环性能控制系统的部件,每个核心类型均具有一个或多个核心。
图4A以框图形式示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统的闭环热和功率管理控制系统的部件,每个核心类型均具有一个或多个核心。
图4B以框图形式示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统的闭环热和功率管理控制系统的平均功率控制器的详细视图,每个核心类型均具有一个或多个核心。
图5以框图形式示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统的闭环热和功率管理状态表的功率映射,每个核心类型均具有一个或多个核心。
图6以框图形式示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中的两个示例性工作间隔对象,每个核心类型均具有一个或多个核心。
图7以框图形式示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统的延期处理器间中断处理系统和调度器的部件,每个核心类型均具有一个或多个核心。
图8以框图形式示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中由控制工作量值索引的性能映射,每个核心类型均具有一个或多个核心。
图9以框图形式示出了根据一些实施方案的使用用于处理包括多个核心类型的处理器上的具有线程组的线程的系统处理线程的方法,每个核心类型均具有一个或多个核心。
图10以框图形式示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中初始线程分组的方法,每个核心类型均具有一个或多个核心。
图11示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中对线程动态分组的方法,每个核心类型均具有一个或多个核心。
图12A和图12B示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上具有线程组的线程的系统的处理器中确定一个或多个线程组的推荐核心类型和DVFS状态以及多个核心类型的DVFS状态的方法,多个核心类型每一个均具有一个或多个核心。
图13示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中将线程从第一核心类型的处理器溢出到第二核心类型的处理器的方法,每个核心类型均具有一个或多个核心。
图14示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中将线程从第一核心类型的处理器窃取到第二核心类型的处理器的方法,每个核心类型均具有一个或多个核心。
图15示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中将线程从第二核心类型的处理器重新平衡到第一核心类型的处理器的方法,每个核心类型均具有一个或多个核心。
图16A和图16B示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中处理与工作间隔对象相关联的线程的方法,每个核心类型均具有一个或多个核心。
图17示出了根据一些实施方案的闭环热和功率管理控制器限制在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中消耗的功率的方法,每个核心类型均具有一个或多个核心。
图18A、图18B和图18C示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中使用延期处理器间中断来增大性能的方法,每个核心类型均具有一个或多个核心。
图19示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中的延期处理器间中断动作的示例性表格,每个核心类型均具有一个或多个核心。
图20示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中使用的示例性应用程序编程接口,每个核心类型均具有一个或多个核心。
图21以框图形式示出了根据一些实施方案的可实现用于处理包括多个核心类型的处理器上的具有线程组的线程的系统和方法的计算设备,每个核心类型均具有一个或多个核心。
具体实施方式
在以下对实施方案的详细描述中将引用附图,附图中类似的附图标记表示相似的元素,并且其中以示例方式示出了可实践的具体实施方案。这些实施方案被足够详细地描述以允许本领域的技术人员实践本发明,并且应当理解,可使用其他实施方案,并可在不脱离本公开内容的范围的情况下进行逻辑修改、机械修改、电气修改、功能修改和其他修改。因此,下面的详细描述不应该被理解为限制性的意义,并且本发明的范围仅由所附权利要求书所限定。
在本说明书中提到的“一个实施方案”或“实施方案”或“一些实施方案”是指结合该实施方案所述的特定特征、结构或特性可被包括在至少一个实施方案中。在本说明书中的各个位置出现短语“实施方案”不一定都是指同一个实施方案。应当指出的是,在不脱离本文所述的实施方案的前提下,其中描述的流程图或操作可能有变化。例如,操作可以并行,同时或以示出的不同顺序执行。
图1以框图形式示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统100的概述,每个核心类型均具有一个或多个核心。系统100可包括硬件110、操作系统120、用户空间130和系统空间140,如下文更详细地描述。
硬件110可包括具有多个核心类型或者不同类型的多个处理器的复合处理器111。复合处理器111可包括多处理系统,所述多处理系统具有多个核心集群,每个集群具有与一个或多个总线互连的核心类型的一个或多个核心。复合处理器111可包括对称多处理系统(SMP),所述系统具有相同类型的核心的多个集群,其中核心的至少一个集群被配置为不同于核心的至少一个其他集群。集群配置可以包括,例如DVFS状态的不同配置,不同的缓存分级结构或不同量或速度的高速缓存。复合处理器111可额外包括非对称多处理系统(AMP),所述系统具有核心的多个集群,其中核心的至少一个集群具有与核心的至少一个其他集群不同的核心类型。每个集群可具有一个或多个核心。核心类型可包括性能核心、效率核心、图形核心、数字信号处理核心和运算处理核心。性能核心可具有设计用于极高通量的架构,并且可包括专用处理,诸如流水线架构、浮点运算功能、图形处理或数字信号处理。性能核心对于每个指令可比效率核心消耗更多的能量。有效核心对于每个指令可消耗比性能核心更少的能量。在实施方案中,复合处理器111可包括片上系统(SoC),该系统可包括硬件110中的硬件元件中的一个或多个。
硬件110还可包括中断控制器112,该中断控制器具有针对每个核心类型的复合处理器111的中断定时器。中断控制器112可与中断定时器一起使用,以实现延期处理器间中断(DIPI),如下文参考图7和图18A、图18B和图18C更充分地描述。
设备110还可包括一个或多个热传感器113。在实施方案中,其中复合处理器111包括SoC,一个或多个热传感器113可被包括在SoC 111中。在实施方案中,至少一个热传感器113可包括在用于每个核心类型的复合处理器111的SoC 111上。在实施方案中,热传感器113可包括虚拟热传感器113。虚拟热传感器113可包括多个物理热传感器113和逻辑部件,该逻辑部件估计位于物理热传感器113的位置之外的一个或多个位置处的一个或多个温度值。
硬件110还可包括存储器114、存储装置115、音频处理116、一个或多个电源117和一个或多个能量和/或功率消耗传感器118。存储器114可为任何类型的存储器,包括动态随机存取存储器(DRAM)、静态RAM、只读存储器(ROM)、闪存存储器或其他存储器设备。存储装置可包括硬盘、固态盘、闪存存储器、USB驱动器、网络连接存储装置、云存储装置或其他存储介质。音频116可包括音频处理器,该音频处理器可包括数字信号处理器、存储器、一个或多个模数转换器(ADC)、数模转换器(DAC)、数字采样硬件和软件、一个或多个编码器解码器(编解码器)模块和其他部件。硬件还可包括视频处理硬件和软件(未示出),诸如一个或多个视频编码器、相机、显示器等。电源117可包括一个或多个存储单元或电池、AC/DC电源转换器或其他电源。电源117可包括一个或多个能量或功率传感器118。功率传感器118也可包括在特定位置,诸如由复合处理器111消耗的功率,由特定子系统诸如显示器、存储设备、网络接口和/或无线电和蜂窝收发器消耗的功率。计算系统100可包括上述部件和/或下文参照图21所述的部件。
操作系统120可包括内核121和其他操作系统服务127。内核121可包括用于复合处理器111的复合处理器调度器705。复合处理器调度器210可包括与复合处理器111和中断控制器112的接口,如下文参考图7所述。内核121或复合处理器调度器210可包括线程组逻辑部件250,该线程组逻辑部件250允许闭环性能控制器(CLPC)通过线程组来测量,跟踪和控制线程的性能。CLPC 300可包括逻辑部件以从复合处理器调度器705接收样本度量,处理每个线程组的样本度量,并确定为满足线程组中线程的性能目标所需的控制工作量。CLPC300可推荐用于处理线程组的线程的核心类型和动态电压和频率缩放(DVFS)状态。进程间通信(IPC)模块125可有利于内核121、用户空间进程130和系统空间进程140之间的通信。
在实施方案中,IPC 125可从引用凭证的线程接收消息。凭证是经由进程间通信(IPC)从第一线程T1发送到第二线程T2的消息中的属性集合。线程T1可置于凭证中的一个属性是T1当前所属的线程组。IPC 125可将凭证从第一线程传递到第二线程。该凭证可包括对线程组的引用,其中第二线程是在代表第一线程执行工作之前采用的。凭证管理126可管理操作系统120、用户空间130和系统空间140内的凭证。操作系统(OS)服务127可包括用于诸如存储器114、存储装置115、网络接口(未示出)以及显示器(未示出)或其他I/O设备的此类设备的输入/输出(I/O)服务。OS服务127还可包括音频和视频处理接口、数据/时间服务和其他OS服务。
用户空间130可包括一个或多个应用程序131-133、闭环热管理(CLTM)134和一个或多个工作间隔对象135。下面参照图2更详细地描述CLTM 134。CLTM 134可监测多个功率消耗和温度量度,并且将度量的样本馈送到多个可调控制器中。CLTM 134的输出可确定复合处理器平均功率目标,用作控制工作量限制器(CEL)400的输入,以确定对由CLPC 300输出的控制工作量的限制。控制工作量限制可用于限制复合处理器111的核心的核心类型,每个类型的核心数量和DVFS状态。工作间隔对象135用于表示每个周期都具有截止日期的周期性工作。工作间隔对象135拥有用于工作的一个实例的令牌和指定时间间隔。执行特定类型(例如音频合成)工作的线程和该工作必须在指定的时间间隔内完成,例如音频帧速率,可与工作间隔对象135相关联。用户空间130可包括多个工作间隔对象135。工作间隔对象135可具有其自身的线程组,如可以在源代码、编译代码或用于执行的可执行文件包中指定。代表工作间隔对象135执行工作的线程可选择进入工作间隔对象135的线程组中。对于已选择进入并采用工作间隔对象135的线程组的线程,代表工作间隔对象135由线程执行的工作与用于CLPC 300操作目的工作间隔对象135的线程组相关联。
系统空间140可包括启动守护进程141和其他守护进程,例如媒体服务守护进程142和动画守护进程143。在实施方案中,由守护进程(例如守护进程142和143)启动的执行特定类型的工作的线程可采用守护进程的线程组。采用启动线程的守护进程的线程组的线程的执行度量归结于用于CLPC 300操作目的的守护进程的线程组。
图2以框图形式示出了根据一些实施方案的用于处理包括多个核心类型的复合处理器上的具有线程组的线程的系统200的详细视图,每个核心类型均具有一个或多个核心。线程组包含一个或多个线程,这些线程基于用于确定线程组中线程的共同目标或目的的一个或多个特征进行分组。图2以高水平描述上文参考图1所述的子系统之间的交互。
系统200可包括内核121,该内核是操作系统的一部分,诸如图1的操作系统120。内核121可包括复合处理器调度器210、线程分组逻辑部件250、闭环性能控制(CLPC)300和功率管理器(PMGR)240。处理器或CPU(诸如图1的复合处理器111)可与内核121以及内核121的子系统交互。闭环热管理器(CLTM)134可与CLPC 300交互以提供复合处理器平均功率目标温度,由CLPC 300用于修改或限制针对一个或多个处理器核心类型的推荐处理器核心类型和/或动态电压和频率缩放(DVFS)状态。在实施方案中,CLTM 134可在用户处理空间130或系统空间140中执行,如图1所示。
复合处理器111可包括多个处理器核心类型的非对称多处理系统(AMP)或对称多处理系统(SMP)。在AMP中,多个核心类型可包括性能核心(P核心)和效率核心(E核心)。在SMP中,多个核心类型可包括在多个不同构型中配置的多个核心。复合处理器111还可包括可编程中断控制器(PIC)112。在实施方案中,PIC 112可具有一个或多个可编程定时器,其可在可编程延迟时间内生成对核心的中断。在实施方案中,PIC 112可具有用于复合处理器111的可编程定时器。在实施方案中,PIC 112可具有用于复合处理器111中的每个核心类型的可编程定时器。例如,PIC 112可具有用于所有P核心222的可编程定时器以及用于所有E核心222的另一个可编程定时器。在实施方案中,PIC 112可具有用于每个核心类型的每个核心的可编程定时器。
复合处理器调度器210可包括线程队列管理器211、线程组性能数据管理器212、线程组推荐管理器213以及针对多个处理器核心类型中的每一个的多个线程队列。在示例性复合处理器111中,复合处理器调度器210可具有E核心线程队列215和P核心线程队列220。
复合处理器调度器705线程队列管理器211可管理多个核心类型的复合处理器111(例如,E核心线程队列215和P核心线程队列220)中的每一个的线程调度。线程队列管理器211还可包括用于即时和/或延迟中断的程序中断控制器223的逻辑部件。
复合处理器调度器210的线程组性能数据管理器212可针对在复合处理器111上执行的多个线程组中的每一个采集线程执行度量。多个线程执行度量231可从线程组性能数据管理器212的采集的线程执行度量中取样,并提供给每个线程组的CLPC 300的多个可调控制器232。可调控制器232可以是比例积分微分(PID)控制器。PID控制器具有表示为:
Figure BDA0001683685490000181
的输出,其中KP为比例增益调整参数,Ki为积分增益调整参数,Kd为微分增益调整参数,e(t)是设定点与进程变量之间的误差,t为时间或瞬时时间(当前)而τ是从时间0到当前时间t的积分变量。
复合处理器调度器210线程组推荐管理器213可从已在复合处理器111上活动的每个线程组的CLPC集群推荐237接收核心类型(集群)推荐。复合处理器调度器210线程队列管理器211可利用针对每个线程组的集群推荐237,以将每个线程组的程序线程编程到适当的核心类型队列(例如215或220)上。
CLPC 300是闭环性能控制器,用于针对核心上活动的每个线程组,确定确保线程组的线程实现其性能目标所需要的控制工作量。性能目标可包括确保最小调度延迟,确保块I/O完成速率,确保指令完成速率,最大化复合处理器利用率(最大限度地减少核心空闲和重新启动),并确保与工作间隔对象相关联的线程在与工作间隔对象相关联的预先确定的时间段内完成其工作。可通过CLPC 300周期性地从CLPC 300采样的输入周期性地或通过来自系统其他部件的异步事件计算度量。在实施方案中,可在异步事件(诸如完成工作间隔对象时间段或存储事件)处对输入进行采样。可以在CLPC 300内计算多个性能度量231,并且每个性能度量231可被馈送到可调控制器232。可调控制器232生成可调线程组PID 233的输出,该可调线程组继而输出线程组满足其性能目标所需的控制工作量234。
在实施方案中,控制工作量234是范围0...1中的无量纲值,其可被映射到性能映射并且用于确定用于线程组的推荐核心集群类型237。集群推荐237被返回到复合处理器调度器705中的线程组管理器213,用于将线程调度到核心类型。对于线程组1...n中的每一个,控制工作量CE 1...n 234由集群最大控制工作量模块238采集。集群最大控制工作量模块238确定每个集群类型的所有控制工作量CE 1...n 234的最大控制工作量值。最大控制工作量模块238将每个集群类型的最大控制工作量输出到相应的集群类型映射函数,例如,E-ce映射235和P-ce映射236。E-ce映射235基于从最大控制工作量模块238输出的最大E集群控制工作量确定E核心的动态电压和频率缩放(DVFS)状态。类似地,基于从最大控制工作量模块238输出的最大P集群控制工作量,P-ce映射236确定P核心的DVFS状态。这些相应的最大DVFS状态可受到CLPC 300的控制工作量限制器(CEL)400输出的限制。下文将参考图4A进一步描述控制工作量限制器400。功率限制映射239接收最大P集群和E集群DVFS状态,并且接收来自CEL 400的控制工作量限制,并且将控制工作量限制从CEL 400映射到每个核心类型的DVFS状态。CEL 400还可限制通过掩蔽某些核心来执行的每种类型的核心的数量。功率限制映射239将每个核心类型的DVFS状态输出至功率管理器240,以设置DVFS状态,以及E核心DVFS映射241和P核心DVFS映射242中的活动核心数。
控制工作量限制器400可接收来自多个温度控制回路261、峰值功率管理器262和闭环热管理器(CLTM)134的输入。控制工作量限制器400将在下文中参考图4A和图4B进行描述。
图3以框图形式示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统的闭环性能控制(CLPC)系统300的部件,每个核心类型均具有一个或多个核心。对于已在核心上活动的多个线程组365中的每一个,CLPC 300可接收多个性能度量中的每一个的样本。到CLPC 300的“输入”表示通过周期性对系统的状态进行采样或通过来自系统的其他部分的异步事件通过CLPC 300获得的信息。“度量”使用一个或多个输入在CLPC 300内计算,并且可作为其输入馈送到可调控制器并且使用可调目标来控制。度量被设计用于捕获工作负载的性能特征。输入源可包括例如动画工作间隔对象(WIO)301、音频WIO 302,数据块存储I/O 115和复合处理器111。来自输入源的示例性度量的简要说明如下:
工作间隔利用率311和312
例如,许多工作负载针对用户可见截止日期,例如视频/音频帧速率。为此类工作负载提供的复合处理器111性能需要足以满足目标截至日期,而无需提供超出满足相应截止日期的超额性能,这是能源效率低下的。为此,对于每个视频/音频帧(工作间隔),当复合处理器111开始在帧上工作时(开始),当复合处理器111停止在帧上工作时(结束),以及帧的呈现截止日期(截止时间),CLPC 300接收来自音频/渲染框架的时间戳。CLPC 300计算帧的工作间隔利用率311或312作为(完成—开始)/(截止日期—开始)。工作间隔利用率是接近截止日期的测量值。值为1.0将指示“刚好”到达最后期限。然而,由于复合处理器111不是大多数工作负载中的唯一代理,并且动态电压和频率缩放(DVFS)操作点是离散的,而不是连续的,因此目标是提供足够的性能以满足具有一些余量的截至日期,但不是如此之多的余量以致效率低下。
基于工作间隔的控制在本质上是反应性的。因此,当所提供的复合处理器111负载突然增大(例如,比最后“n”帧更复杂的框架)时,它容易提供较差的瞬时响应。为了实现来自CLPC 300的主动响应的程度,视频/音频API允许较高水平的框架一旦开始处理新帧就与CLPC 300交互,并传送关于新帧的语义信息诸如其复杂性。工作间隔利用度量311被馈送至具有目标TPT的可调控制器321。对于可调控制器321而言,在TPT与工作间隔利用度量311之间的差值被确定并且乘以可调常数Ki。类似地,将工作间隔利用度量311馈送至具有目标TRT的可调控制器322。对于可调控制器322而言,在TRT与工作间隔利用度量312之间的差值被确定并且乘以可调常数Ki
I/O事物处理速率313
输入/输出(I/O)绑定工作负载,诸如数据块存储I/O 115,与诸如存储装置或网络之类的非复合处理器子系统进行大量交互。此类工作负载通常表现出低复合处理器利用率,并且可能从复合处理器性能观点看起来枯燥无味。然而,工作负载的关键路径包括用于管理从非复合处理器子系统来或去的元数据或数据的复合处理器111所花的一些时间。这通常是在内核驱动程序中花费的时间,例如块存储驱动程序(用于存储)和网络驱动程序(例如Wi-Fi/移动数据传输)。因此,复合处理器111性能可能成为I/O的瓶颈。I/O速率度量计算在采样周期内所测量的I/O事务处理的数量并且在时间段例如一秒内对其推断。I/O速率度量313被馈送至具有目标TI/O的可调控制器323。对于可调控制器323而言,在TI/O与I/O速率度量313之间的差值被确定并且乘以可调常数Ki
复合处理器利用率314
复合处理器调度器210可累积测量复合处理器利用率304、调度延迟305和集群驻留306的统计信息。复合处理器利用率304可测量在时间窗口内利用的复合处理器核心的量,例如百分比,或者利用率。可对复合处理器利用率304的测量或计算值进行采样并将其作为度量馈送至复合处理器利用率314。复合处理器利用率度量314的目的是表征工作负载在给定性能级别耗尽系统的串行循环容量的能力,其中串行循环容量整体检查复合处理器的利用率。对于每个线程组,CLPC 300可周期性地计算复合处理器利用率度量314(在核心上由线程组的至少一个线程所花的时间)/(采样周期)。复合处理器利用率度量314可被定义为“运行利用率”,即它只捕获线程在核心上花费的时间。复合处理器利用率度量314可由复合处理器调度器210提供的度量采样或计算。复合处理器调度器210可在来自线程组的一个或多个线程使用复合处理器111的核心的采样周期内确定一部分时间。复合处理器利用率度量314被馈送至具有目标TUTILIZATION的可调控制器324。对于可调控制器324而言,在TUTILIZATION与复合处理器利用率度量314之间的差值被确定并且乘以可调常数Ki
在实施方案中,可测量线程组的“可运行利用率”,其通过在可运行状态(运行或等待运行)由组的任何线程所花的时间来计算。这具有捕获有限复合处理器核心线程争用的优点;花费时间等待复合处理器111访问的线程组将表现出更高的可运行利用率。考虑线程争用考虑到线程能够运行的相对于线程运行的时间量的周期。当大量线程争用于对处理器核心的访问时,线程将在运行核心之前在可运行状态花费更多的时间。
对于线程组的复合处理器利用率度量314周围执行闭环控制将在最终进入核心时为该线程组提供更高的执行吞吐量,该想法是在线程组的线程的完成时间内尝试和拉动,以更好地近似它们本来会在无竞争的系统中。
线程调度延迟315
调度延迟305可测量线程组中的线程在调度线程组的线程的时间与线程在复合处理器111的核心上运行的时间之间经历的延迟量。调度延迟305可针对线程组的时间窗口进行采样,并且作为调度延迟度量315提供给CLPC 300。在一个实施方案中,如果无法从复合处理器111直接确定可运行利用率,则线程调度延迟度量315用作线程组的可运行利用率的代理。调度延迟度量315可由复合处理器调度器(例如,图2的复合处理器调度器210)提供。复合处理器调度器210可确定线程组的线程何时在核心上,然后何时离开核心。对于线程组中的所有线程,复合处理器调度器210可确定线程组在核心上运行花费的时间。对于每个采样周期,CLPC 300可测量线程组的线程所经历的最大调度延迟。该输入可使用指数加权移动平均滤波器进行过滤,因为CLPC 300以比调度量子更快的速率对系统进行采样。在线程调度延迟度量315周围执行闭环控制使CLPC 300与实际的核心活动相比为潜在的核心活动提供不同响应的灵活性。线程调度延迟度量315被馈送至具有目标TLATENCY的可调控制器325。对于可调控制器325而言,在TLATENCY与调度延迟度量315之间的差值被确定并且乘以可调常数Ki
可将上述量度311-315中的每一个馈送至可调控制器,例如321-325,该可调控制器输出对线程组的线程的控制工作量的贡献。每个可调控制器例如321-325可具有目标值,例如,TPT用于工作间隔利用率311和可调常数Ki。积分器340对贡献进行求和并为线程组生成0...1范围内的无量纲控制工作量,该控制工作量将用作对性能映射345的索引。
集群驻留316
集群驻留306可以测量线程组的线程驻留在核心集群(诸如E核心或P核心)上的时间量。集群驻留306可以针对线程组的时间窗口进行采样,并提供为对集群驻留度量316的度量。在实施方案中,集群驻留度量316可具有针对核心类型的一个或多个集群中的每一个的样本度量,诸如E核心和P核心。在实施方案中,集群驻留度量316包括E集群驻留度量317和P集群驻留度量318和RS占用率度量309。E集群驻留度量317是线程组在效率核心的集群上执行的时间量的测量值。P集群驻留度量318是线程组在性能核心的集群上执行的时间量的测量值。RS占用率度量309是预留站占用的测量值,这是在向处理器流水线调度之前工作负载在就绪状态等待多长时间的测量值。对于线程组的集群驻留的控制工作量可通过分别将度量316至318馈送至控制器330至332从包括E集群驻留度量317和P集群驻留度量318和RS占用率309的集群驻留度量316确定。
CLPC 300输出为控制工作量,是单位间隔上表示工作负载的相对机器性能要求的抽象值。控制工作量被用作对性能映射345的索引,以确定用于线程组的推荐集群类型和动态电压和频率缩放(DVFS)状态。对于已在核心上活动的多个线程组中的每一个的E核心的推荐DVFS状态,是Max()函数367的输入以确定E核心的推荐最大DVFS状态。对于已在核心上的多个线程组中的每一个的P核心的推荐DVFS状态,是Max()函数366的输入以确定P核心的推荐最大DVFS状态。针对E核心(Max()函数367的输出)推荐的最大DVFS状态和针对P核心(Max()函数366的输出)推荐的最大DVFS状态被发送到控制工作量限制器(CEL)400,以确定针对P核心和E核心的推荐的DVFS状态是否进行限制。推荐的DVFS状态可被限制以减小热和/或节省功率。CEL 400向功率管理器240输出核心的每个集群的DVFS状态,例如,E核心DVFS状态371和P核心DVFS状态372。在实施方案中,DVFS状态371和372可包括基于由CEL400的控制工作量限制来掩蔽集群中的一个或多个核心的位映射。下文参考图4A和图4B来描述CEL 400。
图4A以框图形式示出了根据一些实施方案的用于使用包括核心类型的多个集群的复合处理器处理具有线程组的线程的系统的控制工作量限制器(CEL)400的部件,每个集群均具有一个或多个核心。可将CEL 400结合到CLPC 300中以限制从CLPC 300输出的控制工作量结果。CEL 400利用馈送到多个控制器中的多个功率和温度输入、处理器输入和功率目标,以确定施加到由CLPC 300确定的多个核心的推荐DVFS状态的控制工作量限制。
控制工作量限制器400可接收来自快速裸片热管理控制回路401的输入。某个类型的核心(例如,E核心和P核心)的每个集群可具有快速裸片温度传感器,所述快速裸片温度传感器被馈送到闭环热控制器中,所述闭环热控制器围绕核心的集群被封闭,以将温度调节至目标值。快速裸片热管理控制回路401输出作为CEL 400的输入的每个核心类型的最大控制工作量。在实施方案中,快速裸片热管理控制回路401输出P核心最大控制工作量402和E核心最大控制工作量403。
峰值功率管理器(PPM)262可设置复合处理器瞬时峰值功率目标405,其被输入到CEL 400的峰值功率控制器410。PPM 262可测量复合处理器111处消耗的电流。PPM 262可接收来自功率管理器(PMGR)240的信号,指示电源(例如电池)是否存在不足能量供应(“下降”)373来满足复合处理器111处的电流需求。PPM 262产生复合处理器瞬时功率目标405,以响应于来自PMGR 240的能量供应不足(下降373)的信号来限制复合处理器111消耗电流的量。电源117(例如电池)的状态可限制或约束来自PMGR240的信号的输出,诸如当电池太冷或已经历超过电池额定的充电周期数时,指示可能存在不足够的能量供应来满足在复合处理器111处的电流的需求。峰值功率管理器262的实施方案描述于2017年9月11日由迈克尔安格等人提交的,题为“COMPONENT POWER CONSUMPTION MANAGEMENT DETERMININGWHETHER THE POWER AVAILABILITY OF THE POWER SOURCE EXCEEDS THE EXPECTEDPOWERCONSUMPTION”的美国临时专利申请62/557,067中,该专利据此全文以引用方式并入本文,其内容与本公开一致。
闭环热管理器(CLTM)134可将来自一个或多个热传感器的测量馈送到多个可调闭环控制器中以确定复合处理器平均功率目标406,所述复合处理器平均功率目标406被输入至CEL 400的控制器415以确定对从CLPC 300输出的控制工作量的控制工作量限制。控制器415在下文中参考图4B进行描述。
复合处理器功率404可使用功率传感器(例如,图1的118)来测量,该功率传感器测量复合处理器111的功率。硬件计数器409可测量在一段时间内执行的指令数以生成指令速率408。指令速率408可从硬件计数器409值除以时间段的持续时间来确定。峰值功率调节速率407可从自动阻止的硬件指令的数量来确定,该自动阻止的硬件指令将峰值功率除以时间段的持续时间。
控制工作量限制器400
峰值功率控制器410从峰值功率管理器(PPM)262和复合处理器功率404接收复合处理器瞬时功率目标405作为输入。为了避免可能引起意外系统关闭的电池电压下降373,峰值功率管理器262限制在某些物理条件下(例如,低温,低电量充电状态,高电池阻抗)的复合处理器功率。它通过设置复合处理器瞬时功率目标405来实现这一点,所述复合处理器瞬时功率目标405以若干方式之一观察到。在一个实施方案中,功率目标405用作围绕复合处理器111中耗散的总能量(例如,复合处理器功率404)的测量值或者估计封闭的回路(例如,比例积分控制)中的控制目标。在另一实施方案中,功率目标405用于搜索每个复合处理器核心类型DVFS状态中最坏情况的工作负载功率的预先表征的表。后一种方法对于不是最坏情况的工作负载而言在输送性能方面是保守的。任一实施方案的输出为控制工作量限制,该控制工作量限制索引到对于整个复合处理器111来说为全局的功率映射450(下文所述)。复合处理器瞬时功率目标输入405相对于功率限制控制系统的周期性更新是异步的,并且在数百毫秒或更多时间的时间尺度上发生变化。
下文参考图4B描述了平均功率控制器415。
效率控制器417为了允许系统能够满足电池寿命目标,每个隐退指令消耗的能量被限制为效率目标,TEFFICIENCY。TEFFICIENCY为围绕在纳米焦耳(nJ)/指令中表达的效率的测量而闭合的回路(例如,比例积分控制)的控制目标。通过首先确定在采样间隔期间隐退的指令的数量(如复合处理器性能计数器报告),并且将该数字除以该间隔上复合处理器111中耗散的能量的量(使用复合处理器功率的测量或估计)来计算效率度量。闭环效率控制器417的输出为将索引到全局用于整个复合处理器的功率映射450的限制控制工作量(下文所述)。效率度量相对于功率限制控制系统的周期性更新同步采样。
调节速率控制器420:为防止在复合处理器功率递送网络中(即,在复合处理器电压调节器和复合处理器111之间)的电压下降,自动硬件调节机构阻止在测量或估计的复合处理器电流超过限制时发出的指令或微操作(即,从预定工位到执行管线)。该峰值功率调节降低了复合处理器执行工作的速率,但它不会降低复合处理器频率或电压。因此,完成与节气门接合的大量工作可能效率低下;通过降低复合处理器核心类型DVFS状态来提高效率。节气门断言的最大速率仅限于节气门速率目标,TTHROTTLE。这是围绕在每个复合处理器循环的阻止的发行时隙中表达的节气门断言的测量而闭合的回路(例如,比例积分控制)的控制目标。通过首先确定在采样间隔期间阻止的发行时隙数量(如复合处理器性能计数器报告),并且将该数字除以该间隔上复合处理器阻止的周期数(同样,如复合处理器性能计数器所报告)来计算节气门速率度量。闭环控制器的输出为将索引到全局用于整个复合处理器的功率映射的限制控制工作量(下文所述)。节气门速率度量相对于功率限制控制系统的周期性更新同步采样。
参考图4B描述了平均功率控制器415。为了管理对客户满意度目标的外壳(“表面”)温度,闭环热管理CLTM系统134将复合处理器功率限制在某些物理条件下(例如,在整个产品的各种位置处的高测量或建模温度)。CLTM系统134通过设定平均功率目标406来限制复合处理器功率,该平均功率目标406与一个或多个功率区目标例如421和422组合,以确定围绕复合处理器核心中耗散的总能量的低通滤波的测量或估计而闭合的回路(例如,比例积分控制)的控制目标。功率区421和422在必须降低功率的点之前提供复合处理器的主动限制,以维持外壳温度目标;这允许在高功率工作负载期间更优雅的性能降级。每个功率区421和422由功率低通滤波器(其输入是测量或建模的复合处理器功率),功率目标T和目标偏移Δ组成。不同的滤波器时间常数τ允许在不同的时间尺度上配置不同的功率目标。当过滤的功率超过数量(T—Δ)时,功率区变为活动状态,并有助于其目标T达到总体控制目标计算,这是平滑过渡的低通滤波的所有活动功率区目标T和平均功率目标(由热管理器提供)的最小值。闭环控制器的输出为将索引到全局用于整个复合处理器的功率映射的限制控制工作量(下文所述)。平均功率目标输入相对于功率限制控制系统的周期性更新是异步的,并且在几秒的时间尺度上发生变化。
一些功率限制结构以数毫秒为的时间尺度异步更新。这些结构具有比功率限制控制系统的周期性更新快的响应延迟要求。
返回到图4A,对于共享瞬时DVFS状态(即,具有公共稳压器和PLL的复合处理器核心类型)的每个子集,存在馈送快速裸片温度控制器的至少一个裸片温度传感器。该快速裸片控制器401通过设定最大控制工作量来管理其复合处理器子集到裸片温度目标,所述最大控制工作量将索引为对子集独有的复合处理器子集功率映射345。映射的输出为复合处理器子集的最大DVFS状态,这限制了线程组性能控制器生成的DVFS状态请求。
从快速裸片温度控制器401接收的P核心最大控制工作量可用于索引到功率映射345中以确定P核心的DVFS状态。从快速裸片温度控制器401接收的E核心最大控制工作量可用于索引到功率映射345中以确定E核心的DVFS状态。最小控制工作量,min()可由峰值功率控制器410、平均功率控制器426、效率控制器417和节气门速率控制器420中的每一者的控制工作量确定。最小控制工作量可映射到功率映射450以确定每个核心类型的DVFS状态。CLPC 300输出每种核心类型的推荐DVFS状态的最大值,然后将其限制460为以下中的最小值:由CLPC所推荐的每个核心类型的DVFS状态和控制工作量限制400所允许的最大DVFS状态。
还将有限的460最大控制工作量与复合处理器子集内的核心取消推荐到复合处理器调度器210的阈值进行比较。当最大控制工作量低于阈值θ(例如Θ-1P-2P,Θ-1E,Θ-2E)时,将在呈现给复合处理器调度器的推荐的核心位域374中清除一位或多位。复合处理器调度器在下文中进一步描述。
图5以框图形式示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中的闭环热和功率管理子系统的功率映射500,每个核心类型均具有一个或多个核心。
功率映射500
由控制工作量限制器400限制的CLPC 300的闭环控制器的输出是联合限制DVFS状态和调度偏好的标量限制控制工作量。在活动复合处理器核心和复合处理器核心类型DVFS状态的每个元组中耗散的能量在功率映射500中表征,该功率映射通过由控制工作量限制器400确定的控制工作量520进行索引。功率映射500中的每个条目501...510使用交换电容的估计,最大功率工作负载的每一(活动核心、DVFS状态)元组的特定比拟电压和复合处理器核心类型频率来汇总计算功率。由于控制工作量520与相对功率限制580相关联,因此可对活动核心540和DVFS状态560的元组进行搜索满足控制工作量520所指示的相对功率限制580的功率映射500。在一个实施方案中,功率映射500的输出包括DVFS状态限制和推荐的核心位域374。为了满足由控制工作量520表示的相对功率限制580,可能需要限制共享瞬时DVFS状态的复合处理器核心的每个子集使用的最大DVFS状态。可能还需要限制执行工作负载的复合处理器核心的集合。当由控制工作量520在功率映射500中指示的活动核心子集排除了一个或多个复合处理器核心时,复合处理器核心被从推荐的核心位域374中移除,所述核心位域374被呈现给复合处理器调度器,如下所述。虽然图5示出了某数量元组的效率核心(E核心)和性能核心(P核心),以及特定元组的E核心和P核心,但应当理解,可使用任何选择的元组的E核心和P核心来缩放核心所用的功率。可以将性能核心缩放到零活动P核心。有效核心可以缩放到少到一个核心。在实施方案中,可使用开关阵列、可编程逻辑部件或其他选择方法来选择核心元组,以代替使用位域映射来遮蔽选择使用的特定元组的核心。
配置DVFS和推荐的核心
对于共享瞬时DVFS状态的复合处理器核心的每个子集配置的DVFS状态560是受限的。复合处理器核心子集的DVFS状态为该子集的活动线程组所请求的状态、由该子集的周期性功率限制控制系统计算的限制状态以及由该子集的异步功率限制结构计算的限制状态中的最小值。在一个实施方案中,线程组不能覆写DVFS状态限制。可调度复合处理器核心的集合是有限的。在推荐的核心位域中表示的推荐用于复合处理器调度器的复合处理器核心的集合,是由功率映射500推荐的核心和在每个复合处理器子集中由快速裸片温度控制给出的最大控制工作量推荐的核心的交点。一旦在位域中清除给定复合处理器核心的位,则复合处理器调度器210允许在该核心上执行的活动线程运行,直到下一个复合处理器调度器事件(例如,量子到期或阻止)为止,但不会将新线程派遣到核心。一些复合处理器核心推荐变化需要比其他更多的复合处理器调度器工作(例如,将可运行线程从一个运行队列重新定位到另一个运行队列)。滞后参数限制了核心推荐变化的频率。在一个实施方案中,线程组不能覆写推荐的核心位域374。
图6以框图形式示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统100中的两个示例性工作间隔对象101和102,每个核心类型均具有一个或多个核心。
当启动应用程序时,应用程序的线程最初被分组到线程组中。在实施方案中,线程可根据程序代码中指定的分组通过线程之一是否执行功能,诸如动画或音频/视频功能,其中线程结构是已知的,或者线程是否由守护进程启动线程来初始分组,当守护进程启动线程时,守护进程将线程分配到线程组。线程还可以最初与由同一应用程序启动的其他线程进行分组。在线程执行过程中,线程可以选择进入不同线程组。稍后,线程可以选择退出此不同线程组并且返回其初始线程组。
当线程执行具有工作间隔对象(WIO)的共同目的的工作时,选择进入不同线程组的线程的一个实施例发生。具有通用目的的线程描述在类似数据或资源上执行类似操作的线程,其中这些操作被设计为在同一时间间隔内执行。WIO可以拥有自身线程组。线程组可专门为WIO创建或者WIO可以与现有线程组相关联。执行朝向WIO的通用目的的工作的线程,其目的是在指定的时间间隔内执行,可以选择进入WIO线程组。归因于代表WIO由线程执行的工作的线程执行度量与WIO的线程组一起累积。工作间隔对象用于表示每个周期都具有截止日期的周期性工作。WIO拥有令牌和指定时间间隔,用于工作的一个实例。例如,音频合成应用程序可包括音频合成WIO 136,用于将音频从一个或多个其他应用程序合成到必须在预先确定的时间段内完成的单个音频帧。可以以多种方式创建工作间隔对象。操作系统、守护进程、框架或应用程序中可存在一组预定义的工作间隔对象。操作系统的内核可以显式地创建工作间隔对象,例如代表驱动程序。操作系统的内核可以代表应用程序隐式地创建工作间隔对象,例如响应于应用程序对框架的调用。下面描述了创建工作间隔对象的两个实施例。
WIO实施例101包括由媒体服务器守护进程142创建的工作间隔对象135。应用1131例如可以是媒体流应用程序。媒体服务守护进程142可创建工作间隔对象135,并且与WIO 135相关联的线程对应用程序诸如应用程序1 131执行流支持。WIO 135例如可以是用于支持音频、视频或两者的流的WIO。为确保媒体回放的连续性,与WIO 135相关联的线程必须根据WIO 135的预先确定的时间处理媒体。应用1 131例如可生成线程,例如,T1,其执行由WIO 135所需的工作。T1可具有初始线程组,例如,TG1,其与应用程序1 131相关联。WIO135可具有其自身的线程组,例如与WIO 135相关联的TG10。WIO 135可调用线程T1以代表WIO 135执行工作。线程(例如,T1)可经由媒体服务守护进程142和进程间通信(IPC)125请求线程T1加入到WIO 135的线程组(TG10)。线程T1可以选择进入WIO 135线程组TG10。当线程T1代表WIO 135执行工作时,线程T1的线程执行度量将归功于WIO 135线程组TG10。
在WIO实施例102中,应用程序,例如应用程序2 132可调用创建工作间隔对象136的应用程序编程接口(API)或框架。与工作间隔对象136相关联的线程执行API或应用程序2132调用框架中请求的功能。应用2 132例如可为录音室应用程序。录音室应用程序可记录音频和/或视频的多个轨道,并且还可能需要应用于记录的一个或和多个音频效果。应用3133例如可为音频效果程序。应用2 132录音工作室想要在记录时使用应用层序3音频效果。与工作间隔对象136相关联的线程可通过应用程序2 132使用应用程序3 133的音频线效果对记录的音频执行音频合成。应用2 132可生成线程,例如,T2,具有与记录音频的应用程序2 132相关联的线程组TG2。应用程序3 133可生成线程,例如,T3,具有与将音频效果应用于录音的应用程序133相关联的线程组TG3。WIO 136可具有其自身线程组,例如,TG11。线程T2和T3可生成用于合成与WIO 136相关联的音频的音频和效果数据。T2或T3中的一个或两个可以选择进入WIO 136线程组T11。如果两个线程T2和T3两者选择进入WIO 136线程组T11,则与T2、T3和WIO 136相关联的线程执行度量将全部归因于WIO 136线程组T11。T2或T3中的任一或两者稍后可选择退出WIO 136线程组TG11并且返回其相应的初始线程组。例如,线程T2可响应于应用程序132保存或关闭音频文件选择退出WIO 136线程组TG11。例如,线程T3可在应用程序3 133关闭时选择退出TG11,可能是由于用户不再需要效应处理。
图7以框图形式示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统的延期处理器间中断(DIPI)处理系统700和复合处理器调度器705的部件,每个核心类型均具有一个或多个核心。
DIPI系统可用于通过延迟短时间执行正在等待特定核心类型变得可用的线程来提高处理系统的性能。在实施例中,在包括性能核心(P核心)和效率核心(E核心)的非对称多处理(AMP)系统中,可推荐用于运行P核心的线程组。推荐在P核心上运行的线程组的线程被称为“P合格”。如果P合格线程可运行,但在P核心上等待变得可用以及E核心可用,则确保线程进展的一个解决方案是将P合格线程“溢出”来在E核心上运行。然而,此解决方案需要一定量的开销以在E核心上运行P合格线程。另选的解决方案是使得P合格线程等待P核心少量时间变为可用,并在P核心上运行P合格线程。尽管等待可提高性能是反直觉的,但是使用DIPI的这种解决方案认识到,P核心通常比E核心更快地隐退指令,并且P核心可早于唤醒空闲E核心并将P合格线程切换到运行在E核心上而变得可用。
核心的状态可包括其中所述核心正在执行线程的指令的状态和其中所述核心处于空闲的状态,即,不执行指令,但所述核心不处于休眠状态或处于低功率状态。核心状态还可包括其中所述核心处于休眠状态或低功率状态的状态,并且需要将所述核心重新初始化到至少所述空闲状态,使得所述核心可执行指令。
DIPI系统700可包括处理器,诸如复合处理器111和可调度多个核心类型的线程的复合处理器调度器210。复合处理器111可包括一个或多个E核心221和一个或多个P核心222。复合处理器111还可包括专用于缓存线程以用于在E核心221上运行的E高速缓存735和专用于在P核心222上运行线程的P高速缓存745。在实施方案中,复合处理器111还可包括共享高速缓存750。复合处理器111还可包括可编程中断控制器755。在实施方案中,可编程中断控制器755可具有针对每个核心类型的中断以及针对每个核心类型的可编程中断定时器,例如,E核心中断定时器760和P核心中断定时器765。
复合处理器调度器210可包括用于核心221和222的每个核心类型的复合处理器集群的线程队列,例如效率线程队列215(E队列)和性能线程队列220(P队列)。每个队列类型可具有多个队列条目,例如,E队列215可具有在E队列215中待决的E线程215-1,215-2,...,215-n以及P队列220可具有在P队列220中待决的P线程220-1,220-2,...,220-n。复合处理器调度器210、E队列215和P队列220可与复合处理器111,复合处理器111的部件通信。复合处理器调度器210还可包含调度逻辑部件725以管理队列215,220和726,并且使用中断控制器755和定时器760和765来实现DIPI。在实施方案中,复合处理器调度器210还可包括将可运行的线程列入列队的全局运行队列726。在实施方案中,一个或多个运行队列726可包括E核心运行队列215和性能核心运行队列220。
复合处理器调度器210可使用处理器间中断(IPI)调度多核心类型(例如,E核心221和P核心222)上的线程。尽管示出了四(4)个E核心和两个(2)个P核心,但这仅以举例的方式进行。任何数量的E核心和P核心都可以形成核心类型的核心集群。当目标核心被断电时,复合处理器调度器210可使用E中断定时器760和P中断定时器765编程在可编程设定时间间隔之后触发的延迟IPI(DIPI)。在该时间间隔期间,如果目标核心类型变为可用,则复合处理器调度器210可取消延迟IPI,并将线程调度在目标核心上。调度逻辑部件725可集成AMP核心类型信息,动态线程功率/性能推荐以及调度意图,以选择性地和动态使用延迟IPI用于AMP核心调度。这导致AMP系统的性能和功率效率提高,尤其是在性能密集的多线程工作负载中。
当复合处理器调度器210向复合处理器核心(例如221或222)发送IPI时,复合处理器调度器逻辑部件725确定IPI的使用类型:延迟IPI或即时IPI。延迟IPI是以延迟值编程的中断,以推迟中断。即时IPI是没有延迟编程的中断,以产生立即中断。对于延迟的IPI,复合处理器调度器逻辑部件725可使用工作负载启发式来调整延迟时间间隔。复合处理器调度器逻辑部件725可高度准确地识别以下实例,其中借助在延迟间隔期间取消中断的机会,使用中断延迟预计将相对于即时中断提高性能和/或功率效率。复合处理器调度器逻辑部件725使用来自复合处理器调度器111、硬件和功率/性能控制系统闭环性能控制器(CLPC)300和控制工作量限制器(CEL)400的启发式和输入。
复合处理器调度器逻辑部件725可确定调度事件,该调度事件可确定是否使用延迟或即时IPI用于导致IPI的每个调度事件。对于每个调度事件,复合处理器调度器逻辑部件725评估:(1)调度意图/事件类型,当前核心类型,目标核心类型以及从CLPC 300获得的推荐的核心类型分类。调度事件可以包括:将线程从P核心溢出到E核心,将一个P合格的线程从E核心重新平衡到P核心,并使线程可运行。AMP的当前和目标核心类型可以是效率核心(E核心)和性能核心(P核心)。当前核心类型是线程运行的核心类型,目标核心类型是线程入队来运行的核心类型。CLPC 300线程推荐可包括“P合格”,其中线程可在P核心或E核心上运行,并且“E合格”,其中线程可在E核心上运行。复合处理器调度器逻辑部件725决策的示例性表在下文图19中有所描述。
另外,复合处理器调度器逻辑部件725可通过评估:P核心和E核心线程迁移速率和E队列215和P队列220长度来确定可编程的延迟IPI间隔长度控制回路。复合处理器调度器逻辑部件725可使用迁移速率和运行队列长度阈值来增加或减小延迟IPI的延迟时间间隔。这允许复合处理器调度器逻辑部件725响应于工作负载特性来控制核心唤醒预防和线程迁移滞后的方式。
使用具有多个核心类型的处理器诸如AMP中的DIPI的优点包括,由于改进的调度延迟和线程迁移滞后,增大AMP系统上的高性能多线程工作负载的性能和效率,以及使用延迟的IPI提高低需求工作负载的能量效率,从延迟的IPI避免不必要的核心关机和后续的通电。
图8以框图形式示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中由控制工作量值索引的性能映射800,每个核心类型均具有一个或多个核心。
周期性地或响应于异步事件,将线程组的多个线程执行度量馈送到线程组的闭环性能控制器(CLPC)300的多个可调控制器中。CLPC 300的输出是线程组的线程所需的控制工作量,以满足线程组的性能目标。控制工作量可以是从0...1的无量纲值。控制工作量可用于索引到指示多个核心类型和多个核心类型的动态电压和频率缩放(DVFS)状态的性能映射800。在示例性性能映射800中,多个核心类型包括非对称多处理系统(AMP)的性能核心(P核心)和效率核心(E核心)。为AMP的P核心和E核心中的每一个示出多个DVFS状态。核心类型另选地可为对称多处理系统(SMP)的不同核心构型。为核心类型所示的DVFS状态是以非限制性实施例的方式示出的。不同的DVFS状态和更多和/或不同的核心类型可用于性能映射。
在实施方案中,当线程组首先在处理器上开始执行时,控制工作量默认可以为零。如性能映射800中所示,零控制工作量对应于推荐线程组的线程在400MHz的DVFS状态下运行在E核心上。当执行线程组的线程时,为该组的线程积累了多个线程执行度量,这表明了该组的线程的性能目标方面的进展情况。如果未满足线程组的线程的性能目标,则线程组的CLPC 300生成的控制工作量可能会增大,这表明需要更多处理性能来满足线程组的性能目标。较高的控制工作量可指示,例如,在1000MHz的DVFS状态下运行的E核心。性能映射可具有一个或多个用于控制工作量的重叠条目。在示例性性能映射800中,控制工作量可映射以推荐在1800MHz的DVFS状态下运行的E核心,或推荐在200MHz的DVFS状态下运行的P核心。在实施方案中,可分析线程组的工作负载,以确定哪个核心类型和DVFS状态更适合工作负载。例如,如果工作负载包括适合于P核心的大量算术计算、图形渲染或其他工作负载类型,则可为线程组推荐DVFS状态200的P核心。如果工作负载包括大量的块I/O操作、整数算术、字符I/O、/或其他通用处理,则可以在DVFS状态1800MHz推荐E核心。如果工作负载包括后台任务,则可基于对工作负载的控制工作量值和分析,在DVFS状态1800MHz下推荐E核心。
同样,由于满足线程组的性能目标所需的控制工作量继续增加,因此可为线程组推荐具有增加DVFS状态的P核心。当满足性能目标,以及控制工作量下降时,则为线程组推荐P核心类型或E核心类型的较低DVFS状态。满足性能目标所需的控制工作量例如在总体系统工作负载降低,或者推荐的核心类型和DVFS状态满足或超过线程组的性能目标时可能下降。
图9以框图形式示出了根据一些实施方案的使用用于处理包括多个核心类型的处理器上的具有线程组的线程的系统处理线程的方法900,每个核心类型均具有一个或多个核心。线程可被线程分组模块(例如图1的线程组模块123或图2的线程分组模块123)分组,该线程分组模块包括初始线程分组逻辑部件251和动态线程分组逻辑部件252。在实施方案中,线程分组逻辑部件可以在操作系统的内核中实现。多个应用程序的线程可分组到线程组中。最初,所有线程组默认都可以在默认动态电压和频率缩放(DVFS)状态下调度在效率核心(E核心)上。随着线程被执行,并且它们的线程执行度量被采样并馈送到多个可调控制器中,闭环性能控制(CLPC)300模块可确定控制工作量,这将有助于确保线程组中的线程满足性能目标(例如,完成时间,延迟目标,吞吐量等)。线程可以动态更改线程组,并且稍后可恢复到其原始线程组。在实施方案中,线程不必恢复到其原始线程组。
在操作910中,可以启动一个或多个应用程序、进程、任务或对象。
在操作1000中,可以为启动的应用程序、守护进程或其他默认分组的线程确定默认线程组。也可以为一个或多个或所有线程组设置初始控制工作量、核心类型和DVFS状态。有关确定初始线程分组的说明,请参见下面的图10。
在操作920中,复合处理器调度器705可将一个或多个线程入队用于执行。复合处理器调度器705可具有用于每个核心类型的线程队列,例如效率核心(E核心)和性能核心(P核心)。复合处理器调度器最初可以默认地将所有线程组的线程调度为在默认DVFS状态下执行的E核心队列上执行。
在操作930中,可执行一个或多个线程,从而为多个线程中的每一个生成线程执行度量。线程的线程执行度量(例如,图3的线程执行度量311-316)由复合处理器调度器210与每个线程所属的线程组一起累积。
在操作1100中,可以进行动态线程组变化(如果有)。例如,第二线程可接收指示第二线程是代表第一线程执行工作的凭证。凭证是经由进程间通信(IPC)从第一线程发送到第二线程的消息中的属性集合。第一线程置于凭证中的属性之一是第一线程当前所属的线程组。第二个线程可以在第二个线程的下一次执行之前采用凭证中的线程组。在另一实施例中,与工作间隔对象相关联的线程可代表工作间隔对象执行工作。工作间隔对象用于表示每个周期都具有截止日期的周期性工作。对象拥有令牌和指定时间间隔,用于工作的一个实例。工作间隔对象可用于指定在指定的时间间隔内协同工作以实现共同目的的线程。在对工作间隔对象执行工作之前,线程可以采用工作间隔对象的线程组。动态线程分组在下文中详细描述,参照图11。
在操作1200中,对于在时间间隔内在复合处理器111的核心上活动的每个线程组而言,用于线程组的CLPC 300可接收线程组的多个线程执行度量的样本到多个可调控制器中。CLPC可以从线程组的每个可调控制器的输出确定线程组的控制工作量。线程组的控制工作量可映射到性能映射,例如,图8的性能映射800,以获得推荐的核心类型和DVFS状态以用于执行线程组的线程。下文参考图12更详细地描述了CLPC操作。
在操作940中,视情况而定,在操作1100中动态改变的线程组的一个或多个线程将被恢复到线程在动态更改之前所具有的线程组。
图10以框图形式示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中初始线程分组的方法1000,每个核心类型均具有一个或多个核心。线程组包含一个或多个线程,这些线程基于用于确定线程组中线程的共同目标或目的的一个或多个特征进行分组。当启动应用程序或其他库、守护进程或其他可执行任务时,可创建一个或多个进程,每个进程具有多个线程。最初将线程分配给默认线程组。默认的线程分组可以被覆写,如下所述。
在操作1010中,应用程序的所有线程都可以默认被分配到应用程序的线程组(称为“联盟”)。联盟是应用程序的一组密切相关的任务/进程,该应用程序由线程组成,例如web浏览器以及与web浏览器相关联的应用程序扩展。应用程序的线程也可根据“应用程序包”进行初始分组。应用程序包是可包括源代码、编译代码、脚本命令、安装指令、对一个或多个API的引用、包中的应用程序可依靠的框架或其他服务以及描述应用程序包的内容的其他元数据的包。联盟还可以包括一组相关线程,用于实现共同目标,例如工作间隔对象或由守护进程启动的线程。
在操作1015中,可以确定对象类型是否在源代码、对象代码、脚本或对象类型的应用程序包中指定,该对象类型可以覆写对象的默认线程分组。覆写对象类型是某个类型的对象,其线程组将被另一个线程采用,诸如由凭证或工作间隔对象采用。因此,将对象线程组称为“覆写”线程的初始线程组。对象类型可以是对共同目标或目标执行工作的进程、任务或线程组。覆写对象类型可具有其自身的线程组。覆写对象类型可以是调用一个或多个应用程序的一个或多个线程以代表具有对象类型的对象执行工作的程序对象。例如,可以将工作间隔对象指定为具有其自身的线程组。如果确定覆写对象类型已被指定,则方法1000在操作1020处继续,否则方法1000在操作1025处继续。
在操作1020中,与工作间隔对象相关联的应用程序线程可被分配工作间隔对象的线程组。此外,选择用于代表工作间隔对象执行工作的其他应用程序的线程也可以与工作间隔对象进行分组。在实施方案中,当调用第二线程以代表第一线程执行工作时,第二线程可任选地采用第一线程的线程组。第二个线程被称为“选择进入”到第一个线程的线程组。选择进入线程组中的线程随后可选择退出线程组并返回其以前的线程组。方法1000在操作1060处继续。
在操作1025中,可确定线程组是否已在应用程序源代码、编译代码、脚本或应用程序包中指定用于应用程序的一个或多个线程。源代码可以用线程组指示标注。例如,源代码可以用编译器指令标注,该编译器指令使得特定函数、库或源代码块将具有如编译器指令中所指示的线程组。示例性指令如下:#THREADGROUP_ID=12345678;function xyz(void){....};#ENDTHREADGROUP。可在调用应用程序编程接口(API)或框架时确定线程组的应用程序中指定或包含一个或多个API或框架。例如,API的源代码可以用编译器指令标注,该编译器指令使得API的全部或一部分具有如编译器指令中所指示的线程组。如果在操作1025中指定线程组,则方法1000在操作1030处继续,否则方法1000在操作1035处继续。
在操作1030中,具有指定线程组的线程被分组到一个线程组中。方法1000在操作1060处继续。
在操作1035中,可确定应用程序中的一个或多个线程是否与熟知的功能相关联,诸如视频、音频、动画、块I/O等。众所周知的功能可以具有能在源代码、脚本、应用程序包等中引用的所谓的线程组标识符。例如,“音频”、“视频”、“游戏”、“网络”等。复合处理器调度器线程分组逻辑部件可以将所谓的线程组转换为线程组标识符。如果是,则方法1000在操作1040处继续,否则方法1000在操作1045处继续。
在操作1040中,与熟知功能相关联的线程被分组到一个线程组中。熟知的功能可包括例如涉及视频处理、音频处理、渲染、用于数据块存储设备的输入/输出(I/O)的库、API或框架。库、API或框架可以包含指示其功能的显式编译器指令。在实施方案中,可分析库、API或框架的源代码或编译代码以确定由库、API或框架调用的守护进程。初始线程分组逻辑部件251可执行该分析并且根据分析分配线程组。方法1000在操作1060处继续。
在操作1045中,可确定线程是否由与线程组相关联的守护进程启动。如果是,则方法1000在操作1050处继续,否则方法1000在操作1055处继续。
在操作1050中,调用的守护进程动态线程分组逻辑部件252可将线程组分配给由守护进程发起的线程。方法1000在操作1060处继续。
在操作1055中,以上未以其他方式分组的线程将被分配给其默认的应用程序线程组。
在操作1060中,默认情况下,为每个线程组推荐最小控制工作量。在初始线程分组期间,可以由初始线程分组逻辑部件251为所有线程组推荐最小控制工作量。最小控制工作量对应于为零的控制工作量值。为零的控制工作量映射到性能映射条目,以用于在性能映射中为效率核心推荐最低DVFS状态的效率核心。
图11示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中对线程动态分组的方法1100,每个核心类型均具有一个或多个核心。在将线程分配到初始线程组之后,如上文参照图10所述,一个或多个线程可动态地改变如下所述的线程组,参见图11。线程组包含一个或多个线程,这些线程基于用于确定线程组中线程的共同目标或目的的一个或多个特征进行分组。
在操作1105中,可确定执行具有包括工作间隔对象(WIO)135的共同目的工作的线程是否已选择进入WIO 135,该工作将要在WIO 136的指定时间间隔内完成。在实施方案中,当调用第二线程以代表第一线程执行工作时,第二线程可任选地采用第一线程的线程组。第二个线程被称为“选择进入”到第一个线程的线程组。选择进入线程组中的线程随后可选择退出线程组并返回其以前的线程组。如果线程选择进入工作间隔对象的线程组,则在操作1100中,线程采用WIO 135的线程组并且方法1100结束。否则,方法1100在操作1115处继续。
在操作1115中,可任选地确定线程是否被调用以代表调用线程执行工作,或者以其他方式可由调用线程运行。调用线程是调用第二个线程以代表第一线程执行工作的第一线程。如果是,则在操作1120中,将线程与调用线程一起分组并且方法1100结束。否则,方法1100在操作1125处继续。
在操作1125中,可确定线程是否收到消息以代表另一个线程执行工作。消息可以例如经由进程间通信从第一线程传递到该线程,并且消息包含或引用包括或引用线程组的凭证。凭证是经由进程间通信(IPC)从第一线程发送到第二线程的消息中的属性集合。第一线程置于凭证中的属性之一是第一线程当前所属的线程组。如果是,则在操作1130中,线程采用在消息(凭证)中引用的线程组并且方法1100结束。否则,方法1100在操作1135处继续。
在操作1135中,可确定先前选择进入工作间隔对象135的线程现在已选择退出工作间隔对象135。如果是,则在操作1140中,将线程恢复到它在线程选择进入工作间隔对象135的线程组之前具有的线程组。否则,方法1100在操作1145处继续。
在操作1145中,可确定线程是否已变为可由另一个线程运行。如果是,则方法1100在操作1150继续。否则,方法1100结束。
在操作1150中,由另一个线程可运行的线程可以加入另一个线程的线程组并且方法1100结束。
图12A和图12B示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上具有线程组的线程的系统的处理器中确定一个或多个线程组的推荐核心类型和DVFS状态以及多个核心类型的DVFS的方法1200,多个核心类型每一个均具有一个或多个核心。已在处理器核心上活动的多个线程组中的每一个可由闭环性能控制器(CLPC),例如CLPC300和针对线程组确定的控制工作量来处理。可使用性能映射(例如性能映射800)将控制工作量映射到线程组的推荐核心类型和DVFS状态。可以确定每个核心类型的最大DVFS状态,这限制了每个核心类型的所得DVFS状态设置。
在操作1205中,CLPC接收线程组的多个性能度量的样本。性能度量的非限制性实施例列表可包括例如针对一个或多个工作间隔对象的工作间隔利用率、线程组的块存储I/O速率、线程组的复合处理器利用率、线程组的调度延迟以及线程组的集群驻留。
在操作1210中,可将线程组的性能度量的样本馈送到多个可调控制器。在实施方案中,可调控制器可以是比例积分微分(PID)控制器。
在操作1215中,对于线程组来说,CLPC输出控制工作量(CE)值。在实施方案中,控制工作量值为0至1的无量纲值。
在操作1220中,基于对线程组的控制工作量,CLPC可将控制工作量映射到性能映射以确定用于线程组的推荐核心类型和DVFS状态。
在操作1225中,可确定控制工作量是否否映射到在核心类型之间具有重叠的性能映射的区域,使得控制工作量映射到E核心和DVFS状态以及P核心和DVFS状态两者。如果是,则方法1200在操作1230处继续,否则方法1200在操作1235处继续。
在操作1230中,可分析线程组中的工作负载以确定工作是否更适合一个核心类型或另一个核心类型。例如,线程组可包含渲染图形,或执行浮点运算,并且更适合P核心而不是E核心的线程。相似地,线程组中的工作可指示所述工作不是复杂的,诸如块I/O,并且可更适合用于E核心。响应于对线程组的工作的分析,确定推荐核心和DVFS状态,并且方法1200在操作1240处继续。
在操作1235中,控制工作量不映射到包含核心类型的重叠条目的性能映射的一部分,因此推荐的核心类型和DVFS状态可使用针对线程组的控制工作量直接从性能映射导出。方法1200在操作1240处继续。
在操作1240中,可以确定在CLPC的采样周期期间是否有更多在处理器核心上处于活动的线程组。如果是,则方法1200在操作1210处继续下一个线程组,否则方法1200在操作1245继续,如下文参考图12B所述。
在图12B中,操作1245,可针对每个核心类型,从推荐的核心类型和核心类型的DVFS状态确定每个线程组的最大DVFS。
在操作1700中,闭环热和功率控制器可确定每个核心类型的DVFS状态的限制,以及针对每个核心类型的多个活动核心。下文参考图17更详细地描述了操作1700。
在操作1250中,在上文操作1245中确定的每个核心类型的最大DVFS状态可使用在上文操作1700中针对每个核心类型确定的DVFS状态限制来加以限制。每核心类型的核心数量也可受操作1700的限制。操作1700可掩蔽每种类型的一个或多个核心以限制功率消耗,因此限制热生成。
图13示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中将线程从处理器的第一核心类型的处理器溢出到第二核心类型的处理器的方法1300,每个核心类型均具有一个或多个核心。当所有性能核心(P核心)处于忙碌状态并且至少一个效率核心(E核心)为空闲时,可能需要例如在P核心符合条件运行的线程溢出到E核心。虽然P合格线程要在具有小于P核心性能的E核心上运行,但P合格线程至少在E核心上取得一些进展,而不是在P核心调度队列中等待。
在操作1310中,可确定复合处理器调度器是否检测到(1)P合格线程被入队并且可运行,(2)无P核心处于空闲,并且(3)至少一个E核心处于空闲。如果没有P合格线程列入在P队列上,或者没有空闲的P核心,或者没有空闲的E核心,则方法1300结束,否则方法1300在操作1315处继续。
在操作1315中,复合处理器调度器从P队列获取可运行的P合格线程,并将可运行的P合格线程入队用于在E核心上运行。
在操作1320中,任选地,E核心的DVFS状态可同步地增加以运行P合格线程。
图14示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中将线程从第一核心类型的处理器窃取到第二核心类型的处理器的方法1400,每个核心类型均具有一个或多个核心。在上文方法1300中,复合处理器调度器确定可运行的P合格线程正在等待可用的P核心,以执行并选择在E核心上运行P合格线程,而不是使得P合格线程在可用的P核心上等待。在该方法1400中,E核心可确定P合格线程在可用的P核心上等待,并且E核心正要处于空闲(例如,E核心正转变为空闲状态)。E核心可以从P队列中“窃取”P合格线程,并且在E核心上运行P合格线程。
在操作1410中,可确定E核心是否正要处于空闲。如果不是,则方法1400结束,否则方法1400在操作1415处继续。
在操作1415中,可确定是否存在可在可用P核心上等待的运行的P合格线程。如果不是,则方法1400结束。否则,方法1400在操作1420处继续。
在操作1420中,正要处于空闲的E核心可获得P合格线程并在E核心上运行P合格线程。
在操作1425中,任选地,E核心集群的DVFS状态可同步地增加以在E核心运行P合格线程。
图15示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中将线程从第二核心类型的处理器重新平衡到第一核心类型的处理器的方法1500,每个核心类型均具有一个或多个核心。在操作1300中,正在P核心上等待变得可用的可运行P合格线程相反在可用的E核心(“溢出”)上运行。在此方法1500中,正要处于空闲的P核心可以从E队列返回到P合格线程并且在P核心上运行P合格线程。
在操作1510中,可确定是否存在空闲或正要处于空闲过程中的P核心。如果没有,则方法1500结束。否则,方法1500在操作1515处继续。
在操作1515中,可确定P合格线程是否被调度在E核心调度队列上。如果不是,则方法1500结束,否则方法1500在操作1520处继续。
在操作1520中,在E核心调度队列上调度的可运行的P合格线程被排入P核心调度队列上,并且P合格线程在P核心上执行。
在操作1525中,在E核心DVFS状态同步增大以在E核心上运行P合格线程之前,E核心集群的DVFS状态可任选地重置为E核心所推荐的DVFS状态。
图16A和图16B示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中处理与工作间隔对象(WIO)135相关联的线程的方法1600,每个核心类型均具有一个或多个核心。WIO 135可由守护进程或应用程序创建,并且该进程对于每一个稍有不同。图16A示出了处理线程的方法1600,其中WIO 135由守护进程创建。图16B示出了处理线程的方法1600,其中WIO 135由应用程序创建。
在图16A中,操作1605,应用程序,例如应用程序1被启动。默认情况下,应用程序中的线程被分配给单个组,例如线程组1(TG1)。
在操作1610中,应用程序1的线程T1调用API或框架,该API或框架调用守护进程或操作系统(OS)服务127以执行工作。
在操作1615中,调用的守护进程或OS服务127创建具有线程组例如10(TG10)的工作间隔对象(WIO)135。
在操作1620中,执行与WIO 135相关联的工作的线程T1可请求线程加入WIO线程组TG10。
在操作1625中,线程T1选择进入WIO 135线程组TG10。线程T1然后代表WIO 135执行工作。线程T1执行所生成的线程执行度量与WIO 135的线程组TG10一起累积。
在操作1630中,可确定线程T1是否选择从WIO 135线程组TG10中退出。如果是,则方法1600在操作1645处继续,否则方法1600在操作1640处继续。
在操作1640中,线程T1保持在WIO 135的TG10的线程组中。方法1600在操作1650处继续。
在操作1645中,线程T1返回到应用程序线程组TG1。方法1600在操作1650处继续。
在操作1650中,任选地线程T1可执行附加工作。与线程T1的执行相关联的线程执行度量被装入线程组1所属的线程组(应用程序TG1或WIO TG10)。
在图16B中,工作间隔对象(WIO)135由应用程序,而不是守护进程创建。该版本的方法1600的许多操作与上文图16A中的方法1600基本上相同。为了便于参考,此处再次描述操作。
在操作1605中,应用程序,例如应用程序1被启动。默认情况下,应用程序中的线程被分配给单个组,例如线程组1(TG1)。
在操作1612中,启动应用程序,例如应用程序2,其具有属于例如,线程组2(TG2)的线程。
在操作1617中,应用程序2创建具有线程组例如10(TG10)的工作间隔对象(WIO)135。
在操作1620中,执行与WIO 135相关联的工作的线程T1可请求线程T1加入WIO线程组TG10。
在操作1625中,线程T1选择进入WIO 135线程组TG10。T1然后对WIO 135执行工作。线程T1执行所生成的线程执行度量与WIO 135的线程组TG10一起累积。
在操作1630中,可确定线程T1是否选择从WIO 135线程组TG10中退出。如果是,则方法1600在操作1640处继续,否则方法1600在操作1645处继续。
在操作1640中,线程T1保持在WIO 135的TG10的线程组中。方法1600在操作1650处继续。
在操作1645中,线程T1返回到应用程序线程组TG1。方法1600在操作1650处继续。
在操作1650中,任选地线程T1可执行附加工作。与线程T1的执行相关联的线程执行度量被装入线程组1所属的线程组(应用程序TG1或WIO TG10)。
图17示出了根据一些实施方案的用于处理具有在包括多个核心类型的处理器上的线程组的线程的系统中消耗的控制工作量限制器(CEL)400限制功率的方法1700,每个核心类型均具有一个或多个核心。计算系统100包含多个热传感器113和功率传感器118。一些传感器生成应快速采取行动的读数,而其他传感器则表示随时间推移的变化。方法1700描述了一个实施方案,其用于利用多个温度和功率传感器以最大化性能,平衡温度和功率消耗控制。以上参照图4A和图4B描述了用于控制功率消耗和热生成的控制逻辑部件,控制工作量限制器400,其可并入CLPC 300中。
在操作1705中,可确定复合处理器111的快速裸片温度是否大于预先确定的时间段的快速裸片温度限制。复合处理器111可以是包括多个温度传感器的片上系统(SoC)。在实施方案中,核心类型的每个核心集群可具有快速裸片温度传感器。在实施方案中,一个或多个快速裸片温度传感器可为虚拟温度传感器。快速裸片温度预先确定的时间限制可为小于10毫秒(10ms)的量级。如果快速裸片温度在预先确定的阈值时间内大于阈值温度,则方法1700在操作1735处继续,否则方法1700在操作1710处继续。
在操作1710中,可确定复合处理器111所消耗的原始功率是否在预先确定的时间段内超过原始功率消耗限制。原始功率是消耗的功率,其未被控制元件(例如功率区的低通滤波器)过滤。消耗的功率可通过能量传感器测量,并在预先确定的时间限制下求和以获得消耗的功率。在实施方案中,可确定每个指令的平均能量,并且乘以在预先确定的时间内执行以获得功率消耗的多个指令。此操作检测到可快速提高复合处理器111或系统的温度的消耗功率的突发。因此,该突发的预先确定的时间可为小于10ms的量级。如果在预先确定的时间限制期间消耗的原始功率超过预先确定的功率消耗阈值,则方法1700在操作1735处继续,否则方法1700在操作1715处继续。
在操作1715中,可确定在多个功率区域的一个中消耗的过滤后的功率在预先确定的时间内减去该区域的功率δ后是否超过区域的功率目标。如果是,则方法1700在操作1735处继续,否则方法1700在操作1720处继续。
在操作1720中,可确定复合处理器111(片上系统,SoC)消耗的过滤后的功率是否大于预先确定的过滤后的功率限制。如果是,则方法1700在操作1735处继续,否则方法1700在操作1725处继续。
在操作1725中,可确定自动硬件调节的计数在预先确定的时间内是否已超过预先确定的计数。自动硬件调节可阻止指令由处理器核心执行,但成本高昂且效率低下。如果确定在预先确定的时间段内自动硬件调节发生超过预先确定的次数,则方法1700在操作1735处继续,否则方法1700在操作1730处继续。
在操作1730中,可确定温度传感器而不是复合处理器111温度传感器在预先确定的时间段内超过温度限制。如果是,则方法1700在操作1735处继续,否则方法1700结束。非复合处理器温度传感器可包括设备外壳(“表面温度”)上的一个或多个温度传感器,诸如显示器、电池、电池充电器或其他发热部件之类的子系统上的温度传感器。预先确定的时间段可以是100毫秒的量级。
在操作1735中,对于复合处理器111的一个或多个集群,DVFS状态和/或活动核心的数量可减少。减少DVFS状态和/或活动核心的数量可减少功率消耗,从而减少生成的热量。
图18A、图18B和图18C示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中使用延期处理器间中断来增大性能的方法1800,每个核心类型均具有一个或多个核心。用于提高性能的其他技术可包括上文参考图13、图14和图15所述的跨核心类型的线程的溢出、窃取和再平衡。图13、图14和图15中的每一种方法执行线程从一个核心类型切换到另一个核心类型产生一定量的花销。延迟的进程间中断(DIPI)提供了一种附加的或可选的用于提高性能的技术。在DIPI的一个实施例中,有资格在P核心上运行并且正在等待P核心变得可用于执行该线程的线程,当存在可用的E核心时,可以只等待P核心变得可用。P核心很快将指令隐退。因此,P核心可变得可用于以相同时间量在P核心上运行P合格线程,或者比在E核心上运行P合格线程更少的时间,并且具有较少的开销。上文参照图7描述了实施方法1800的子系统。
图18A-图18C和图19的各个方面在某些情况下唤醒核心。根据核心的当前状态,唤醒核心可具有至少两个含义中的一个。核心的状态可包括其中所述核心正在执行线程的指令的状态和其中所述核心处于空闲的状态,即,不执行指令,但所述核心不处于休眠状态或处于低功率状态。核心状态还可包括其中所述核心处于休眠状态或低功率状态的状态,并且需要将所述核心重新初始化到至少所述空闲状态,使得所述核心可执行指令。
在图18A中,在操作1810中,可确定调度事件是否从P核心“溢出”到E核心。当执行溢出的标准发生时,调度事件为“溢出”,如上文图13中所述。如果调度事件为溢出,则方法1800在操作1815处继续,否则方法1800在操作1840处继续。
在操作1815中,可为具有E核心延迟时间的E核心设定中断。P核心可非常快速地将指令隐退,并且P核心可在E核心延迟时间内变得可用于接受调度的线程。方法1800在操作1820处在图18B处继续。
在图18B中,操作1820可确定E核心中断定时器是否已过期。如果是,则方法1800在操作1825处继续,否则方法1800在操作1830处继续。
在操作1825中,E核心中断时间已过期,没有P核心可用。E核心可被唤醒并且P合格线程可被调度在E核心上运行,并且方法1800结束。
在操作1830中,中断定时器尚未到期,并且可确定P核心是否已可用于线程执行。如果不是,则方法1800在操作1820处恢复来检查中断定时器,否则方法1800在操作1835处继续。
在操作1835中,在E核心中断定时器到期之前P核心已变得可用。可以取消E核心中断,P合格线程可以被调度在P核心上,并且方法1800结束。
返回到图18A,在操作1840中,可确定调度事件是否为“从E核心重新平衡到P核心”如果是,则方法1800在操作1845处继续,否则方法1800在操作1850处继续。
在操作1845中,P核心中断可设定为中断延迟为零,以产生立即中断。方法1800在操作1870处恢复。
在操作1850中,调度事件为“使得可运行。”可以为该线程的推荐核心类型设定中断。在实施方案中,如果线程是为P核心推荐的线程组的成员,则设置P核心中断。在实施方案中,如果线程是推荐用于E核心的线程组的成员,则设置E核心中断。
在操作1852中,可确定所推荐的核心类型是否为P核心。如果是,则方法1800在操作1860处继续,否则方法1800在操作1855处继续。
在操作1855中,可确定所推荐的E核心类型是否可用于(未空闲)线程的线程组。如果是,则方法1800在操作1860处继续,否则方法1800在操作1865处继续。
在操作1860中,推荐核心类型的核心可用,因此中断定时器被设定为零,使得推荐核心类型的中断一旦中断编程(立即中断)即会触发。方法1800在操作1870处继续。
在操作1865中,用于线程的线程组的推荐核心类型的中断定时器的终端时间被设置为推荐核心类型的中断定时器延迟(延迟中断)。方法1800在操作1870处继续。
在操作1870中,中断控制器可被编程为在操作1850中确定的中断类型以及在操作1860或操作1865中确定的中断延迟值,以唤醒中断定时器到期时的线程,并将线程调度到推荐核心类型的核心上。方法1800在图18C的操作1875处继续。
在图18C上,在操作1875中,可确定对于线程的推荐核心类型的编程中断定时器是否已到期。如果是,则方法1800在操作1890处继续,否则方法1800在操作1880处继续。
在操作1880中,可以确定对于线程的线程组的推荐类型的核心是否变得可用。如果是,则方法1800在操作1885处继续,否则方法1800在操作1875处继续。
在操作1885中,可取消对线程编程的中断。
在操作1890中,将线程唤醒并调度在线程的线程组的推荐核心类型的核心上。
图19示出了根据一些实施方案的用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中的处理器间中断(IPI)动作的应用程序实施例的非限列表的表格1900,每个核心类型均具有一个或多个核心。处理器间中断(IPI)可以是延迟的IPI(DIPI)或即时IPI(IIPI)。
对于线程的延迟的进程间中断,IPI动作的表格可使用线程最后一次运行的当前核心类型1910,线程被调度运行的目标核心类型1920,线程的核心类型的调度推荐1930,已发生的调度事件1940,目标核心类型的目标核心空闲状态1950(例如,空闲/不空闲)和中断配置决策1960。
例如,在行1901中,线程在P核心上最后一次运行,因此当前核心类型1910为“P”。线程将调度在E核心上运行,因此目标核心类型1920为“E”。由CLPC 300推荐的用于线程的调度推荐1930用于线程运行在P核心上。调度事件1940为“从P溢出到E核心”,该事件指示线程(尽管P合格)被调度为从P核心转移到E核心。不同于将开销用于在E核心上运行P合格线程,DIPI可用于让P合格线程等待短时间,以查看是否有P核心可用于运行P合格线程。因此,中断决策1960为“延迟的”,而不考虑到目标核心空闲状态1950。中断控制器用P核心延迟值进行编程,如果中断定时器过期之前P核心变得可用,则中断被取消,P合格线程运行在P核心上。
在实施例1902中,用于线程的当前核心类型1910为E核心,并且目标核心类型1920为P核心。调度推荐1930用于在P核心上运行线程。调度事件1940为“从E核心重新平衡到P核心。”中断决策1960为“即时”,而不考虑到目标核心空闲状态1950。中断控制器定时器被编程使得中断唤醒P核心,从而能够调度线程。
在实施例1903中,用于线程的当前核心类型1910为P核心,并且目标核心类型1920为E核心。线程的线程组的调度推荐1930为E核心。调度事件1940为“使得可运行”,它指示使线程在核心上运行。当CEL 400将推荐的核心类型从P核心减少到E核心时,诸如当正满足线程组的性能目标时,会出现行项目1903中的条件,并且需要较少的控制工作量来满足线程组性能目标。另选的,系统可被重载,可能已消耗太多的功率,和/或产生太多如由CEL 400所确定的热,并且推荐的线程组通过CEL 400从P核心减少到E核心。如果目标核心空闲状态1950为“空闲”,则中断决策1960设置为延迟。中断控制器可被编程为E核心延迟值,以等待E核心准备运行线程。如果目标核心空闲状态1950“不空闲”,则中断决策被设为立即。中断控制器定时器可设置为零,将生成中断,从而使线程在E核心上运行。
在实施例1904中,当前核心类型1910为E核心,目标核心类型1920为P核心,具有调度推荐1930或P核心。其中调度事件1940用于使线程可运行。P核心的中断时间可以设置为零(例如,中断决策1960为立即),将生成中断,线程将在P核心上运行。在实施例1904中,中断决策1960可不考虑到目标核心空闲状态1950而做出。
在实施例1905中,用于线程的当前核心类型1910为E核心,用于线程的目标核心类型1920为E核心,调度推荐1930用于E核心,并且调度事件1940用于使线程可运行。中断决策1960可基于目标核心空闲状态1950被延迟或可为即时。如果目标核心空闲状态1950是空闲的,则可将E核心延迟编程到E核心中断中以产生中断。否则,可对E核心定时器进行编程以产生即时中断。
在实施例1906中,用于线程的当前核心1910为P核心,用于线程的目标核心类型1920为P核心,调度推荐1930用于P核心,并且调度事件1940用于使线程可运行。P核心中断时间可被编程为具有值以产生即时中断(例如,中断决策1960为立即),并且线程将在P核心上运行。在实施例1906中,中断决策1960可不考虑到目标核心空闲状态1950而做出。
图20示出了根据一些实施方案的在用于处理包括多个核心类型的处理器上的具有线程组的线程的系统中使用的示例性应用程序编程接口(API),每个核心类型均具有一个或多个核心。在图20(“软件栈”)中,应用程序可使用若干服务API调用服务1或2,以及使用若干OS API调用操作系统(OS)。服务1和2可使用若干OS API调用操作系统。
请注意,服务2具有两个AP,其中一个(服务2API 1)从应用程序1接收调用并向其返回值,另一个(服务2API 2)从应用程序2接收调用并向其返回值,服务1(其可以是,例如软件库)对OS API 1进行调用并自其接收返回值,服务2(其可以是,例如软件库)对API 1和OS API 2进行调用并自其接收返回值,应用程序2调用API 2并自其接收返回值。
图21以框图形式示出了根据一些实施方案的可实现用于处理包括多个核心类型的处理器上的具有线程组的线程的系统和方法的计算系统2100,每个核心类型均具有一个或多个核心。
图21示出的计算机系统旨在表示一系列计算系统(有线或无线的),包括例如台式计算机系统、膝上型计算机系统、平板电脑系统、蜂窝电话、包括支持蜂窝的PDA的个人数字助理(PDA)、机顶盒、娱乐系统或其他消费电子设备。另选的计算系统可以包括更多、更少和/或不同的部件。图21的计算系统可被用于提供计算设备和/或服务器设备。
计算机系统2100包括总线2105或用于传递信息的其他通信设备,和与总线2105联接的可处理信息的复合处理器2110。
虽然计算系统2100被图示为具有单个处理器,但是计算系统2100可以包括复合处理器2110中的多个处理器和/或协处理器。复合处理器2110可包括多个核心类型。复合处理器2110可包括对称复合多处理器(SMP),所述对称复合多处理器具有配置为多个不同构型的多个核心。复合处理器2110可包括具有多个不同的核心类型的非对称多处理系统,每个核心类型具有一个或多个核心。核心类型可包括性能核心、效率核心、图形核心和运算处理核心。性能核心可具有设计用于极高通量的架构,并且可包括专用处理,诸如流水线架构、浮点运算功能、图形处理或数字信号处理。性能核心对于每个指令可比效率核心消耗更多的能量。有效的处理器可包括通用处理器,所述通用处理器可处理输入/输出(I/O),诸如用于数据块存储、数据流、对显示器接口,处理整数算法和其他一般处理功能。有效核心对于每个指令可消耗比性能核心更少的能量。复合处理器2110可包括片上系统(SoC)。
计算系统2100还可以包括随机存取存储器(RAM)或其他动态存储设备(称为主存储器2120),其耦接到总线2105并且可以存储信息和可由复合处理器2110执行的指令。在由复合处理器2110执行指令期间,主存储器2120还可用于存储临时变量或其他中间信息。
计算系统2100还可包括只读存储器(ROM)2130和/或耦接到总线2105的可存储用于复合处理器2110的静态信息和指令的其他静态数据存储设备。非易失性数据存储设备2140可以耦接到总线2105以存储信息和指令。非易失性数据存储设备2140可包括存储介质,诸如但不限于闪存存储器或磁碟、光盘、固态盘可写或可改写的光盘。
计算系统2100还可包括功率和热传感器2145,其包括功率传感器或能量传感器和热传感器。在实施方案中,其中复合处理器2110包括片上系统(SoC),一个或多个热传感器可被包括在SoC中。在实施方案中,至少一个热传感器可包括在用于每个核心类型的复合处理器2110的SoC上。在实施方案中,热传感器可包括虚拟热传感器。虚拟热传感器可包括多个物理热传感器和逻辑部件,其估计位于物理热传感器之外的一个或多个位置处的一个或多个温度值。功率传感器也可包括在特定位置,诸如由处理器或SoC 111消耗的功率,由特定子系统诸如显示器、存储设备、网络接口和/或无线电和蜂窝收发器消耗的功率。在实施方案中,功率传感器和热传感器2145内的功率传感器可包括或包含能量传感器。在实施方案中,能量传感器可随时间累积和平均消耗的能量,以产生功率消耗值。
计算系统2100还可以经由总线2105耦接到显示设备2150,诸如液晶显示器(LCD)、发光二极管(LED)显示器或触摸屏,以向用户显示信息。计算系统2100还可以包括数字字母混合输入设备2160,该设备包括数字字母键和其他键,其可以耦接到总线2105以将信息和命令选项发送到复合处理器2110。数字字母小键盘可以实现为触摸屏显示器上的小键盘图像。另一种用户输入设备是光标控件2165,诸如触控板、鼠标、轨迹球触摸屏输入或光标方向键,用于向复合处理器2110传递方向信息和命令选择以及在显示设备2150上控制光标移动。计算系统2100还可以经由一个或多个网络接口2180从通信地耦接到计算系统2100的远程设备接收用户输入。
计算系统2100还可包括音频、视频或音频/视频处理器2170。音频处理器可包括数字信号处理器、存储器、一个或多个模数转换器(ADC)、数模转换器(DAC)、数字采样硬件和软件、一个或多个编码器解码器(编码的)模块和其他部件。视频处理器可包括一个或多个视频编码器、相机、显示器等。
计算系统2100还可以包括一个或多个网络接口2180,以提供对诸如局域网之类的网络的访问。网络接口2180可以包括,例如具有天线2185的无线网络接口,所述天线可以表示一个或多个天线。计算系统2100可以包括多个无线网络接口,诸如WiFi和
Figure BDA0001683685490000511
和蜂窝电话接口的组合。网络接口2180也可以包括例如有线网络接口,以经由网络电缆2187与远程设备通信,该电缆可以是例如,以太网电缆、同轴电缆、光纤电缆、串行电缆或并行电缆。
在一个实施方案中,网络接口2180可以例如通过符合IEEE 802.11b和/或IEEE802.11g标准来提供对局域网的接入,并且/或者无线网络接口可以例如通过符合蓝牙标准提供对个人区域网络。其他无线网络接口和/或协议也可得到支持。除了经由无线LAN标准进行通信之外或代替经由无线LAN标准进行通信,网络接口2180可以使用例如时分多址(TDMA)协议、全球移动通信系统(GSM)协议、代码分割多址(CDMA)协议,和/或任何其他类型的无线通信协议来提供无线通信。
本文所述的系统和方法的目的包括使用线程组的性能度量的测量来控制系统性能,以便在具有多个核心类型和每个核心类型中的一个或多个核心的多处理系统中针对核心的一个或多个集群对线程调度和动态电压和频率缩放(DVFS)状态进行联合决策。性能度量被馈送到闭环控制系统,该系统生成用于联合决定核心要运行的速度以及线程组线程运行的核心类型的输出。线程组包含一个或多个线程,这些线程基于用于确定线程组中线程的共同目标或目的的一个或多个特征进行分组。本文所述的系统和方法的目的包括最大限度地减少性能工作负载的线程调度延迟,确保性能工作负载始终找到性能核心,最大限度地提高性能工作负载的吞吐量,并确保效率工作负载始终找到有效的核心。目的还可以包括确保线程入队用于处理时不对核断电。另一个目的是在超额订阅性能核心时卸载性能工作负载。线程被系统地引导至工作负载的正确类型的核心。
公开了在具有至少两种不同核心类型的处理器上的调度线程的系统和方法,每个不同的核心类型各自具有该类型的一个或多个核心,并且调度器可调度至少两种不同的核心类型之间的线程。每个核心类型可具有不同的动态电压和频率缩放(DVFS)状态。处理器可以是具有相同设计的多个核心的对称多处理系统(SMP),但核心的第一集群在第一构型中运行,并且核心的第二集群在第二构型中运行。处理器可以是具有至少两种不同的核心类型的非对称多处理系统(AMP),诸如一个或多个性能核心和一个或多个效率核心。每个核心类型可在多个可选择的电压和频率设置下运行,并且两种核心类型可同时运行。
可以将处理的线程一起分组到相关线程的线程组中。通常,线程组旨在将工作分组在一起,以实现共同的目标,目的或类型的工作。基于线程组中线程的执行度量的样本,闭环性能控制器(CLPC)可生成控制工作量,该控制工作量表示线程组应接收的性能或效率的量,以满足线程组的性能目标。CLPC可针对在处理器核心上活动的多个线程组中的每一个确定用于线程组的控制工作量。每个线程组的控制工作量可映射到性能映射,该性能映射基于针对线程组计算的控制工作量,针对线程组推荐核心类型和动态电压和频率缩放(DVFS)状态。从活动线程组,可以针对第一类型的核心(例如,性能核心)推荐的所有线程确定最大DVFS状态。可以针对推荐为第二核心类型(例如,效率核心类型)的所有活动线程组确定最大DVFS状态。调度器可以将针对每个核心类型设置DVFS状态与调度活动线程组中的线程进行协调。
在一个实施方案中,CLPC中的控制工作量限制器(CEL)可产生控制工作量限制,其可限制从CLPC输出的控制工作量。控制工作量限制可基于快速裸片温度,在短时间内消耗的峰值功率,在多个功率区中的任一个中消耗的平均功率,设备外部的表面温度,硬件调节事件计数或其他控制度量。
线程最初可以分组为默认的线程组,诸如将应用程序的线程分组在一起,称为“联盟”。联盟是应用程序的一组密切相关的任务/进程,该应用程序由线程组成,例如web浏览器以及与web浏览器相关联的应用程序扩展。可通过启动服务守护进程,应用程序编程接口(API)或框架将任务组合到单个联盟中。线程组状态与每个联盟相关联。线程分组可以由一组线程的手动构建体显式定义。某些类型的工作负载,例如音频处理服务,已完全了解其组织,并可以相应地对线程分组。线程可以通过利用现有内核交互来隐式地加入线程组。例如,当线程经由进程间通信进行通信时,它们可任选地传递引用接收人加入的线程组的凭证。当第一线程唤醒第二线程以代表第一线程执行工作时,第二线程可以采用第一线程的线程组。当第一线程使得第二线程可运行时,第二线程可以采用第一线程的线程组。线程可以根据线程将执行的工作类型分组,如启动线程的守护进程所指示的那样。可以在源代码,编译代码或封装到可交付用于安装的代码中指定显式线程分组。用于工作间隔对象的显式线程分组可以在源代码,编译代码或用于安装的可交付封装中指定。
工作间隔对象(WIO)是用于表示每个周期都具有截止日期的周期性工作的对象。WIO拥有令牌和指定时间间隔,用于工作的一个实例。WIO可以与线程组关联。可以专门为WIO创建线程组,或者WIO可以与现有线程组相关联。要实现共同目标的线程,要在指定的时间间隔内执行的工作的线程,可以加入WIO的线程组。当用户空间进程通过特定的系统调用请求工作间隔对象时,可以创建工作间隔对象。操作系统的内核可以借助系统调用当前和自动创建工作间隔对象。例如,工作间隔对象可以是例如表示一个或多个线程的对象,该线程表合成多个音频源并且将用于回放的音频都在固定时间段(工作间隔)内编码。执行具有工作间隔对象的目的的工作的线程可以选择进入工作间隔对象线程组。通过选择进入线程执行的工作被装入工作间隔对象。接收包含对线程组的引用的凭证的线程可与凭证中引用的线程组进行分组。凭证是经由进程间通信(IPC)从第一线程T1发送到第二线程T2的消息中的属性集合。线程T1置于凭证中的一个属性是T1当前所属的线程组。第二线程T2从T1接收IPC消息。作为邮件接收的一部分,发送我的T1的凭证被“兑换”(或采纳)。兑换凭证意味着处理与凭证关联的所有属性,并将指针置于线程上的凭证。线程T2现在可以被视为在从线程T1接收的凭证的上下文中运行。作为“兑换”凭证的动作的一部分,操作系统内核中的凭证管理器通知线程T1将凭证中的线程组属性发送到线程2,并且自动将线程T2加入到凭证中指定的线程组。线程T2已完成处理来自线程T1的消息之后,线程T1可以选择丢弃凭证。丢弃(或“丢下”)凭证导致线程T2离开线程T1的线程组,并导致线程T2重新加入到“归属地”线程组(与其中T2正在运行的任务相关联的线程组)。在线程T2丢下凭证之前,线程T2也可以沿同一凭证传送到另一个线程/进程线程T3。因为凭证包含线程组属性,它指向线程T1的线程组,当线程T3从线程T2收到消息并采纳/兑换凭证时,线程T3将加入T1的线程组。线程T3将随后作为T1的线程组的一部分,只要该凭证由线程T3采纳即可。线程T2和T3两者一丢下该凭证就将离开线程T1的线程组。这可以无限期地重复。因为内核凭证管理器控制凭证的内容,并且凭证将自动发送作为基本进程间通信机制的一部分,所以当两个进程传达处理/接收的线程时,消息将自动加入发送消息的进程的线程组。在一个实施方案中,在可运行之前,例如在线程接收凭证时,可以将线程回溯为与凭证中引用的线程组进行分组。
处理器的调度器可以根据针对线程组的推荐核心类型和推荐DVFS状态调度线程组的线程。核心类型的推荐DVFS可以由找到核心类型的最大DVFS状态的CLPC提高,超过在系统上活动的所有线程组。推荐的DVFS状态可受控制工作量限制器(CEL)的限制,限制DVFS状态和/或将执行线程的核心类型的核心数量。
核心类型可具有相关联的中断和中断定时器,该中断和中断定时器可用于延迟线程在某些条件下执行。例如,如果线程有资格在性能核心上运行,但没有空闲的性能核心,则线程可能被调度用于效率核心。可以针对线程对定时器编程,并且线程可以延迟运行。如果定时器过期,则会触发中断,并且性能合格线程在效率核心上运行。但是,如果性能核心在中断时间到期之前可用于线程执行,则可以取消定时器,并且线程可以在性能核心上执行。
在第一实施方案中,在具有处理器的系统上运行线程的方法可包括将一个或多个进程的线程分组到一个或多个线程组中,所述处理器具有一个或多个核心的第一集群和一个或多个核心的第二集群。第一线程组的第一线程可在第一集群类型的核心上运行。第一线程的多个线程执行度量可与第一线程组的多个线程执行度量结合。可至少部分地基于所述多个线程组度量的样本来为第一线程组确定第一控制工作量。可为第一线程组类型推荐第一或第二核心类型,可推荐针对第一线程组的DVFS状态。在实施方案中,控制工作量可被映射到由控制工作量表征的核心集群和DVFS状态的性能映射。在实施方案中,处理器可包括非对称多处理系统(AMP),所述系统具有第一核心类型的性能核心(P核心)和第二核心类型的有效核心(E核心)。可以执行来自第二线程组的线程,并且可将与第二线程的执行相关联的性能度量结合到第二线程组的执行度量。第二控制工作可至少部分地基于第二线程组的线程执行度量的样本来确定第二线程组。响应于确定第一线程组的第一推荐核心集群和第二线程组的第二推荐核心集群是相同的核心集群,最大DVFS状态可被计算为第一推荐DVFS状态和第二推荐DVFS状态的最大值,并且推荐用于第一线程组和第二线程组的核心集群的DVFS状态可被设置为计算的最大DVFS状态。响应于确定第一线程组的第一推荐核心集群和第二线程组的第二推荐核心集群是不同的核心集群,则可将第一推荐核心集群的DVFS状态设置为第一推荐DVFS状态,并且可将第二推荐核心集群的DVFS状态设置为第二推荐DVFS状态。线程执行度量可以周期性地或响应于异步事件来确定。线程组执行度量的样本可为线程组的CLPC的可调控制器输入。控制工作量可映射到推荐的核心类型和DVFS状态。如果控制工作量映射到性能映射的重叠部分,其中可推荐P核心或E核心,则调度器或CLPC可以至少部分地基于线程执行的工作类型来确定是否推荐P核心或E核心。例如,可以向P核心推荐图形呈现。I/O操作可推荐给E核心。在实施方案中,线程组已驻留在核心类型和/或DVFS状态的时间可被视为确定核心类型和/或DVFS状态以推荐用于线程组。在实施方案中,其中第一类型的核心被超额订阅,并且第二类型的核心是空闲的,调度器可调度符合第一核心类型的线程组的线程以用于在第二核心类型上执行。第一类型的核心可检测到符合在第一类型的核心上执行的线程实际上在第二类型的核心上运行,并且第一类型的核心正要处于空闲(例如,在转变为空闲状态的过程中)。线程可以在第一类型的现在空闲核心上运行。
在第二实施方案中,在包括非对称多核心处理器的系统上执行将线程分组为线程组的方法,所述非对称多核心处理器具有至少两种不同的核心类型的多个核心。该方法包括启动包括多个进程的应用程序并将所述多个进程中的每一个分配给第一线程组。响应于确定多个进程中的进程致使要生成工作间隔对象,该进程的线程可被分配给不同于第一线程组的第二线程组。执行来自第一线程组的至少一个线程。确定第一线程组中的线程的多个线程执行度量,并且至少部分地基于第一线程组的线程执行度量将第一线程组的线程的处理器核心类型推荐给调度器。在实施方案中,响应于确定所述多个线程中的线程引起要生成工作间隔对象,所述线程可被分配给不同于第一线程组的第二线程组。执行来自第二线程组的至少一个线程,并且确定第二组中线程的多个线程执行度量。至少部分地基于第二线程组的线程执行度量的样本将第二线程组的线程的处理器核心类型推荐给调度器。在实施方案中,该方法还可包括接收来自第一线程组的线程选择进入第二线程组的指示,执行选择进入第二线程组中的线程,并且将来自第一组的线程的选择进入第二线程组的多个线程执行度量归于第二组。在实施方案中,该方法还可包括接收来自第一线程组的选择进入第二线程组的线程选择退出第二线程组的指示,将选择退出的线程分配到第一线程组,执行选择退出线程,并将选择退出第二线程组的线程的多个线程执行度量归于第一线程组。
对线程分组用于在AMP上执行的方法可包括确定所述应用程序指示所述多个进程中的进程将被分配到与第一和第二线程组不同的第三线程组,执行来自第三线程组的至少一个线程,确定所述第三组中的线程的多个线程执行度量,并且至少部分地基于所述第三线程组的线程执行度量的样本来向调度器推荐针对第三线程组的线程的处理器核心类型。
对线程分组用于在AMP上执行的方法可包括确定多个进程中的进程执行工作的类型,以及将进程的线程分配给第四线程组,执行第四线程组中的至少一个线程,确定第四组中的线程的多个线程执行度量,并且至少部分地基于第四线程组的线程执行度量的样本来向调度器推荐针对第四线程组的线程的处理器核心类型。第四个线程组可以包括来自守护进程的线程。
对线程分组用于在AMP上执行的方法可包括,响应于确定来自第一线程组的线程已使得第五线程组中的线程被唤醒和/或由调度器运行,将唤醒和/或使得可运行的线程从第五线程组分配给第一线程组。该方法还可包括执行至少一个线程,确定第一线程组中的线程的多个线程执行度量,并且至少部分地基于第一线程组的线程执行度量的样本向调度器推荐针对第一线程组的线程的处理器核心类型。
对线程分组用于在AMP上执行的方法可包括,响应于确定来自第一线程组的线程已接收代表另一线程执行工作的凭证,该凭证指示第六线程组,将该线程分配给第六个线程组。所述方法还可包括执行来自所述第六线程组的至少一个线程,确定所述第六组的线程的多个线程执行度量,并且至少部分地基于所述第六线程组的线程执行度量来向调度器推荐针对第六线程组中的线程的处理器核心类型。该方法还可包括确定接收到凭证并代表另一个线程执行工作的线程已经代表另一个线程完成该工作,并将线程分配回第一个线程组。
对线程分组用于在AMP上执行的方法可包括启动包括多个进程的应用程序,将所述多个进程中的每一个分配第一线程组,由守护进程启动第一线程组中的进程的至少一个线程,由守护进程将至少一个线程分配到和与第二线程组相关联的第二守护进程相关联的第二线程组,执行第二线程组的至少一个线程,确定第二线程组中的线程的多个线程执行度量,并且至少部分基于第二线程组的线程执行度量的样本来向调度器推荐针对第二线程组的线程的处理器核心类型。
在第三实施方案中,使用AMP上的工作间隔对象处理工作的方法可包括创建与具有第一线程组标识符的第一线程组相关联的工作间隔对象。与工作间隔对象相关联的一个或多个线程可在所识别的时间间隔内朝向工作间隔对象的共同目标执行工作。该方法还可包括从与具有第二线程组标识符的第二线程组相关联的进程的线程接收请求以采纳第一线程组标识符,响应于确定线程采纳第一线程组标识符,将该线程执行的工作的量度归为第一线程组标识符,以及至少部分地基于与第一线程组标识符相关联的工作度量的样本确定处理器核心类型,以运行具有第一线程组标识符的一个或多个线程。响应于调用守护进程或操作系统服务,可以实例化工作间隔对象。在实施方案中,可响应于应用程序调用应用程序编程接口(API)或框架来实例化工作间隔对象。所述方法还可包括接收与所述线程相关联的请求以选择退出所述第一线程组,并且将所述线程与所述第二线程组相关联。在实施方案中,该方法还可包括将由线程执行的工作的度量归结为第二线程组,并且至少部分地基于与第二线程组标识符相关联的工作度量的样本来确定处理器类型以运行第二线程组的一个或多个线程。
在第四实施方案中,在具有第一集群类型和第二集群类型的处理器上调度线程的方法包括:确定处理器的控制工作量和确定用于核心的第一集群或第二集群中的至少一个的DVFS状态,其中第一集群类型具有一个或多个核心,第二集群类型具有一个或多个核心。控制工作量限制可与包括用于核心的第一和第二集群中的每一个的多个DVFS状态的功率映射结合使用。电源映射可通过控制工作量限制进行索引。可接收到预定用于执行的线程可在不同于使用控制工作量限制所确定的DVFS状态的DVFS状态下的核心的第一集群或第二集群中的至少一个上运行的推荐。DVFS状态可针对核心的第一集群或第二集群中的至少一个设置为使用控制工作量限制确定的DVFS状态。在实施方案中,该方法还可包括确定处理器中的第一预先确定的时间段耗散的总能量大于处理器的瞬时功率目标。至少部分地取决于第一预先确定时间段内处理器中耗散的总能量确定处理器的控制工作量限制。在实施方案中,可响应于确定处理器在第二时间段消耗的平均功率大于处理器的平均功率目标,或者每个指令消耗的平均能量大于预先确定的时间段的确定的效率阈值中的一个或多个来减少控制工作量限制。在实施方案中,系统可监测多个功率区,每个功率区各自具有低通滤波器,所述低通滤波器包括功率目标、时间常数、功率δ和滤波器算法。在第一时间,滤波后的功率减去功率区的功率δ可小于功率区的功率目标。在晚于第一时间的第二时间,滤波后的功率可超过功率区的目标功率。在实施方案中,系统可继续对功率区的功率进行监测和滤波,所述功率减去功率区的功率δ超过其功率目标。可以继续减少控制工作量限制,直到功率区的过滤后的功率跟踪功率区的目标功率为止。在实施方案中,响应于处理器的测量或估计电流超过预先确定的时间段的电流限制,或者指令被阻止执行的数量超过预先确定的时间段的峰值调节速率目标,可减小控制工作量限制,其中阻止指令的调节由硬件完成。在实施方案中,至少部分地基于核心的第一集群或第二集群中的至少一个的最大快速裸片温度限制来确定最大控制工作量。在实施方案中,可以被屏蔽而不会执行。在实施方案中,可限制核心可被屏蔽的速率。所述处理器可包括AMP处理器,所述AMP处理器具有P核心的第一核心集群和E核心的第二核心集群。
处理系统可包括具有至少两个核心类型和每个核心类型的至少一个核心的处理器。该系统还可具有用于每个核心类型的温度传感器。系统还可以具有包括每个核心类型的调度队列的调度器。CLPC可以确定线程组的线程的控制工作量,并为线程组的线程推荐核心类型和DVFS状态。闭环热管理系统可至少部分地基于每个核心类型的温度传感器来确定控制工作量限制。该系统可包括片上系统(SoC)。温度传感器中的一个或两个可为虚拟传感器。
在第五实施方案中,在具有包含多个性能核心(P核心)和多个有效核心(E核心)的非对称多处理系统(AMP)的计算系统上执行的方法可包括确定由PC推荐用于处理的线程是否被调度用于由AMP的PC来处理,并且响应于确定没有P核心可用于处理线程以及E核心可用于处理线程:配置中断控制器的定时器以在预定延迟值结束后生成中断。该方法还可包括响应于在定时器到期之前确定PC可用于处理线程,取消中断并由可用的PC处理线程。在实施方案中,该方法还可包括响应于PC变得可用于处理线程之前定时器到期:生成中断以唤醒E核心并由E核心处理线程。该方法可另外包括确定PC已可用,配置中断控制器的定时器以生成立即中断以唤醒PC,生成中断以唤醒PC并由可用的PC处理线程。
在AMP处理器上调度线程的方法可包括确定是否已推荐线程由E核心进行处理以及线程可由调度器运行。响应于确定E核心是空闲的,配置中断控制器的定时器以生成立即中断来唤醒E核心,否则配置定时器中断控制器以生成延迟中断。所述方法还可包括响应于所述中断控制器生成中断,唤醒所述E核心并由所述E核心处理所述线程。该方法还可包括确定是否已推荐线程由PC进行处理,并且该线程可再次由调度器运行。该方法可包括配置中断控制器的定时器以生成立即中断来唤醒PC。响应于中断控制器生成中断,该方法可包括唤醒PC并由PC处理线程。
在一个实施方案中,非暂态计算机可读介质可以存储可执行指令,该可执行指令在由处理系统执行时,可以执行上述任何功能。
在又一个实施方案中,联接到编程有可执行指令的存储器的处理系统可以在执行该指令时,执行上述任何功能。
本文所述的一些实施方案包括环境中的一个或多个应用编程接口(API),其中调用程序代码与通过一个或多个接口而受调用的其他程序代码进行交互。各种功能调用、消息或其他类型的调用还可包括各种参数,这些调用可以经由调用程序和被调用代码之间的APl而传输。此外,API可以给调用程序代码提供使用在API中定义的、并在被调用程序代码中实现的数据类型或类别的能力。
在以上说明书中,结合本发明的特定实施例已描述了本发明。但显而易见的是,在不脱离本发明的更广泛的实质和范围的情况下,可对这些实施例进行各种修改和变更。因此,说明书和附图应被视为是例示性的而非限制性的。

Claims (44)

1.一种在系统上运行线程的计算机实现的方法,所述系统包括处理器,所述处理器具有一个或多个核心的第一核心集群和一个或多个核心的第二核心集群,所述方法包括:
将一个或多个进程的线程分组到一个或多个线程组中;
在第一核心集群的核心上运行第一线程组的第一线程;
将所述第一线程的多个线程执行度量与所述第一线程组的多个线程执行度量结合在一起;
至少部分地基于与所述第一线程组相关联的多个线程组度量来确定所述第一线程组的第一控制工作量;以及
推荐所述第一核心集群或所述第二核心集群,以用于执行所述第一线程组的线程,以及确定所推荐的核心集群的动态电压和频率缩放DVFS设置。
2.根据权利要求1所述的方法,其中推荐所述第一核心集群或所述第二核心集群以及确定所推荐的核心集群的DVFS状态设置包括将所述第一控制工作量映射到由控制工作量表征的DVFS状态和核心集群的性能映射。
3.根据权利要求1所述的方法,其中:
所述处理器包括非对称处理器;
所述第一核心集群包括多个性能核心即P核心;并且
所述第二核心集群包括多个有效核心即E核心。
4.根据权利要求1所述的方法,还包括:
至少部分地基于与第二线程组相关联的多个线程组度量来确定所述第二线程组的第二控制工作量,其中响应于确定所述第二线程组的一个或多个线程在一个或多个核心上是活动的来执行确定所述第二控制工作量,其中所述第二线程组的一个或多个线程在一个或多个核心上是活动的指示所述第二线程组是活动线程组;以及
至少部分地基于所述第二控制工作量来确定第二推荐的核心集群和DVFS状态以执行所述第二线程组的线程。
5.根据权利要求4所述的方法,还包括:
响应于确定所述第一线程组的所推荐的核心集群和所述第二线程组的所述第二推荐的核心集群是同一核心集群:
将最大DVFS状态计算为第一推荐的DVFS状态和第二推荐的DVFS状态的最大值;
将针对所述第一线程组和第二线程组推荐的核心集群的DVFS状态设置为所计算的最大DVFS状态;
响应于确定所述第一线程组的所述第一推荐的核心集群和所述第二线程组的所述第二推荐的核心集群是不同核心集群:
将所述第一推荐的核心集群的DVFS状态设置为第一推荐的DVFS状态;并且
将所述第二推荐的核心集群的DVFS状态设置为第二推荐的DVFS状态。
6.根据权利要求1所述的方法,其中所述多个线程执行度量以周期性间隔测量,所述度量包括以下中的一者或多者:
线程的可运行时间;
根据凭证采用所述第一线程组的线程的可运行时间,并且所述线程的所述可运行时间归属于截止所述线程根据所述凭证采用所述第一线程组时的第一线程组执行度量;
所述线程的核心利用时间;以及
由所述线程执行的多个输入/输出事务,
或者响应于异步事件来测量所述多个线程执行度量,所述度量包括用于线程的调度延迟或工作间隔利用率。
7.根据权利要求1所述的方法,其中所述多个线程执行度量中的每一个向可调控制器提供输入,并且根据针对线程组的度量的可调控制器中的每一个的组合输出来确定所述线程组的控制工作量。
8.根据权利要求1所述的方法,其中推荐所述第一核心集群或所述第二核心集群以及确定所推荐的核心集群的DVFS状态设置包括将所述第一控制工作量映射到由控制工作量表征的DVFS状态和核心集群的性能映射,其中所述控制工作量映射到所述性能映射指示所述第一线程组的线程有资格运行在所述第一核心集群或所述第二核心集群上,并且至少部分地通过所述第一线程组执行的工作类型来确定推荐所述第一线程组在所述第一核心集群或所述第二核心集群上运行。
9.根据权利要求8所述的方法,其中至少部分地基于所述第一线程组在特定DVFS状态中已经驻留的持续时间来确定针对所述第一线程组的DVFS状态推荐。
10.根据权利要求1所述的方法,其中所述处理器包括非对称处理器,所述第一核心集群包括多个性能核心即P核心,
所述第二核心集群包括多个有效核心即E核心,并且所述方法还包括:
确定第一组的一个或多个线程被列入队以在所述处理器的P核心上运行;
确定所述处理器的P核心都不是空闲的;
确定一个或多个E核心处于空闲或将要处于空闲;
在E核心上执行所述第一组的线程;以及
通过与所述第一组的线程在所述E核心上运行同时地增大E核心的频率或电压中的至少一个来增加E核心的DVFS状态。
11.根据权利要求10所述的方法,还包括:
确定所述第一组中的线程被推荐用于P核心,但是正在E核心上运行;以及
响应于检测到P核心处于空闲或将要处于空闲,在P核心上运行所述线程。
12.一种在其上存储有可执行指令的非暂态计算机可读介质,所述可执行指令在由包括耦合到存储器的至少一个硬件处理器的处理系统执行时执行操作,所述操作包括根据权利要求1至11中任一项所述的方法的操作。
13.一种数据处理系统,包括用于执行根据权利要求1至11中任一项所述的方法的装置。
14.一种在包括非对称多核心处理器的系统上执行的计算机实现的方法,所述非对称多核心处理器具有至少两种不同的核心类型的多个核心,所述方法包括:
启动包括多个进程的应用程序;
将所述多个进程中的每一个分配给第一线程组;
执行来自所述第一线程组的第一线程,其中所述第一线程向至少一个线程发送请求以选择进入到所述第一线程组;
接收来自第二线程组的所述至少一个线程选择进入到所述第一线程组的指示;
执行选择进入到所述第一线程组的所述至少一个线程;
确定所述第一线程组中的线程的多个线程执行度量,其中为所述第一线程组积累所述第一线程和选择进入的所述至少一个线程的线程执行度量;以及
至少部分地基于所述第一线程组的线程执行度量,向调度器推荐用于所述第一线程组的线程的处理器核心类型或动态电压和频率缩放DVFS状态中的至少一者。
15.根据权利要求14所述的方法,还包括:
响应于确定所述多个进程中的进程实现工作间隔对象,将所述进程分配给所述第二线程组;
执行来自所述第二线程组的至少一个线程;
确定所述第二线程组中的线程的多个线程执行度量;以及
至少部分地基于所述第二线程组的线程执行度量,向所述调度器推荐用于所述第二线程组的线程的处理器核心类型或DVFS状态中的至少一者。
16.根据权利要求15所述的方法,还包括:
接收来自所述第一线程组的线程已选择进入到所述第二线程组的指示;
执行选择进入到所述第二线程组的线程;以及
将来自所述第一线程组的选择进入到所述第二线程组的所述线程的多个线程执行度量归属于所述第二线程组。
17.根据权利要求16所述的方法,还包括:
接收来自所述第一线程组的选择进入到所述第二线程组的所述线程已选择退出所述第二线程组的指示;
将选择退出的线程分配到第一线程组;
执行选择退出的线程;以及
将选择退出所述第二线程组的所述线程的多个线程执行度量归属到所述第一线程组。
18.根据权利要求17所述的方法,还包括:
确定所述应用程序指示所述多个进程中的进程将被分配给与所述第一线程组和所述第二线程组不同的第三线程组;
执行来自所述第三线程组的至少一个线程;
确定所述第三线程组中的线程的多个线程执行度量;以及
至少部分地基于所述第三线程组的线程执行度量,向所述调度器推荐用于所述第三线程组的线程的处理器核心类型或DVFS状态中的至少一者。
19.根据权利要求14所述的方法,还包括:
确定所述多个进程中的进程执行的工作的类型并且将所述进程的线程分配到第四线程组;
执行所述第四线程组中的至少一个线程;
确定所述第四线程组中的线程的多个线程执行度量;以及
至少部分地基于所述第四线程组的线程执行度量,向所述调度器推荐用于所述第四线程组的线程的处理器核心类型或DVFS状态中的至少一者。
20.根据权利要求19所述的方法,其中所述第四线程组包括来自守护进程的线程。
21.根据权利要求14所述的方法,还包括:
响应于确定来自所述第一线程组的线程已使得第五线程组中的线程能够由所述调度器运行,将来自所述第五线程组的所述线程分配给所述第一线程组;
执行来自所述第五线程组的至少一个线程;
确定所述第五线程组中的线程的多个线程执行度量;以及
至少部分地基于所述第一线程组的线程执行度量,向所述调度器推荐用于所述第五线程组的线程的处理器核心类型或DVFS状态中的至少一者。
22.根据权利要求14所述的方法,还包括:
响应于确定来自所述第一线程组的线程已接收代表另一线程执行工作的凭证,所述凭证指示第六线程组,将所述线程分配给所述第六线程组;
执行来自所述第六线程组的至少一个线程;
确定所述第六线程组的线程的多个线程执行度量;
至少部分地基于所述第六线程组的线程执行度量,向所述调度器推荐用于所述第六线程组中的线程的处理器核心类型或DVFS状态;
确定来自所述第一线程组的所述线程已经代表所述另一线程完成执行工作;以及
将所述线程分配回所述第一线程组。
23.一种在其上存储有可执行指令的非暂态计算机可读介质,所述可执行指令在由包括耦合到存储器的至少一个硬件处理器的处理系统执行时执行操作,所述操作包括根据权利要求14至22中任一项所述的方法的操作。
24.一种数据处理系统,包括用于执行根据权利要求14至22中任一项所述的方法的装置。
25.一种在包括非对称多核心处理器的系统上执行的计算机实现的方法,所述非对称多核心处理器具有至少两种不同的核心类型的多个核心,所述方法包括:
创建具有第一线程组标识符的第一线程组;
从与具有第二线程组标识符的第二线程组相关联的进程的线程接收采用所述第一线程组标识符的请求;
响应于确定所述线程已采用所述第一线程组标识符,执行所述线程并将由所述线程执行的工作的度量归属于所述第一线程组标识符;
至少部分地基于与所述第一线程组标识符相关联的工作度量来确定运行具有所述第一线程组标识符的一个或多个线程的处理器核心类型;
至少部分地基于每一种核心类型的温度传感器确定控制工作量限制;以及
接收被调度用于执行的具有所述第一线程组标识符的所述一个或多个线程基于所述控制工作量限制在不同处理器核心类型上运行的推荐。
26.根据权利要求25所述的方法,其中响应于对守护进程或操作系统服务的调用来实例化工作间隔对象,所述工作间隔对象与所述第一线程组相关联。
27.根据权利要求26所述的方法,其中响应于应用程序对应用程序编程接口API或框架的调用来实例化所述工作间隔对象。
28.根据权利要求25所述的方法,还包括:
接收与所述线程相关联的选择退出所述第一线程组的请求;以及
将所述线程与所述第二线程组相关联。
29.根据权利要求28所述的方法,还包括:
将由所述线程执行的工作的度量归属到所述第二线程组;以及
至少部分地基于与所述第二线程组标识符相关联的工作度量来确定运行所述第二线程组中的一个或多个线程的处理器类型。
30.一种在其上存储有可执行指令的非暂态计算机可读介质,所述可执行指令在由包括耦合到存储器的至少一个硬件处理器的处理系统执行时执行操作,所述操作包括根据权利要求25至29中任一项所述的方法的操作。
31.一种数据处理系统,包括用于执行根据权利要求25至29中任一项所述的方法的装置。
32.一种处理系统,包括:
处理器,所述处理器具有至少两个核心类型和每个核心类型的至少一个核心;
每个核心类型的温度传感器;
调度器,所述调度器包括用于每个核心类型的调度队列;
闭环性能控制器,所述闭环性能控制器确定线程组的线程的控制工作量,并推荐用于所述线程组的线程的核心类型以及动态电压和频率缩放;
闭环热管理系统,所述闭环热管理系统至少部分地基于每个核心类型的温度传感器来确定控制工作量限制;以及
其中所述控制工作量限制用于限制所述调度器将调度用于执行的所述线程组中的线程所处于的核心类型或DVFS状态。
33.根据权利要求32所述的处理系统,其中所述系统包括片上系统。
34.根据权利要求32所述的处理系统,其中所述温度传感器中的一者或两者为虚拟温度传感器。
35.一种限制系统上的控制工作量的计算机实现的方法,所述系统包括处理器,所述处理器具有含一个或多个核心的第一集群和含一个或多个核心的第二集群,所述方法包括:
确定所述处理器的控制工作量限制;
使用所述控制工作量限制和包括用于每个集群的多个动态电压和频率缩放DVFS状态的功率映射来确定所述第一集群或第二集群中的至少一个的DVFS状态,所述功率映射由所述控制工作量限制索引;
接收被调度用于执行的线程在与使用所述控制工作量限制所确定的DVFS状态不同的DVFS状态下在所述第一集群或第二集群中的至少一个上运行的推荐;
将所述第一集群或所述第二集群中的所述至少一个的所述DVFS状态设置为使用所述控制工作量限制确定的DVFS状态;以及
响应于确定所述处理器在第二时间段内消耗的平均功率大于所述处理器的平均功率目标或响应于确定在预先确定的时间段内每个指令耗散的平均能量大于预先确定的效率阈值,减少所述控制工作量限制。
36.根据权利要求35所述的方法,还包括:
确定在第一预先确定的时间段内所述处理器中耗散的总能量大于所述处理器的瞬时功率目标;以及
其中至少部分地取决于所述第一预先确定的时间段内所述处理器中耗散的总能量来确定所述处理器的控制工作量限制。
37.根据权利要求35所述的方法,还包括:
由所述系统监视所述系统内的多个功率区,其中每个功率区包括具有目标功率、滤波器方法、时间常数、功率δ的低通滤波器并且所述滤波器方法确定用于该功率区的滤波后的功率;
响应于确定所述多个功率区中的功率区的以下情况来减少所述控制工作量限制:
在第一时间,t0处,所述功率区的滤波后的功率减去所述功率区的功率δ小于所述功率区的功率目标;并且
在第二时间,比t0晚的t1处,所述功率区的滤波后的功率超过所述功率区的目标功率。
38.根据权利要求37所述的方法,还包括:
继续监视并确定所述功率区的滤波后的功率减去所述功率区的功率δ超过所述功率区的目标功率;以及
继续减少所述控制工作量限制,直到所述功率区的滤波后的功率跟踪到所述功率区的目标功率为止。
39.根据权利要求35所述的方法,还包括:
响应于确定以下中的至少一者来减少所述控制工作量限制:
确定在预先确定的时间段内超过所述处理器的所测量或估计的当前限制;以及
确定被阻止执行的多个指令在预先确定的时间段内超过峰值调节速率目标,其中阻止所述指令的调节由所述系统中的硬件完成。
40.根据权利要求35所述的方法,还包括:
确定所述第一集群或第二集群中的至少一个的最大快速裸片温度限制;以及
至少部分地基于所述最大快速裸片温度和所述功率映射来确定所述集群的最大控制工作量。
41.根据权利要求40所述的方法,还包括:
响应于确定所述控制工作量限制超过所述最大控制工作量,将所述控制工作量限制设置为所述处理器的最大控制工作量。
42.根据权利要求35所述的方法,还包括:
掩蔽所述第一集群或所述第二集群中的至少一个中的一个或多个核心,其中所掩蔽的核心不执行线程;并且
限制一个或多个核心的掩蔽能够发生的速率。
43.根据权利要求35所述的方法,其中:
所述处理器包括非对称处理器;
所述第一集群包括多个性能核心即P核心;并且
所述第二集群包括多个有效核心即E核心。
44.一种其上存储有可执行指令的非暂态计算机可读介质,所述可执行指令在由包括具有一个或多个核心的第一集群和一个或多个核心的第二集群的至少一个硬件处理器的处理系统执行时,耦接到存储器的所述至少一个硬件处理器执行包括根据权利要求35至43中任一项所述的方法的操作。
CN201810562661.1A 2017-06-04 2018-06-04 具有闭环性能控制器的amp体系结构的调度器 Active CN108984282B (zh)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US201762514930P 2017-06-04 2017-06-04
US62/514,930 2017-06-04
US15/870,766 2018-01-12
US15/870,763 2018-01-12
US15/870,766 US11080095B2 (en) 2017-06-04 2018-01-12 Scheduling of work interval objects in an AMP architecture using a closed loop performance controller
US15/870,760 US10956220B2 (en) 2017-06-04 2018-01-12 Scheduler for amp architecture using a closed loop performance and thermal controller
US15/870,760 2018-01-12
US15/870,764 US10884811B2 (en) 2017-06-04 2018-01-12 Scheduler for AMP architecture with closed loop performance controller using static and dynamic thread grouping
US15/870,764 2018-01-12
US15/870,763 US10417054B2 (en) 2017-06-04 2018-01-12 Scheduler for AMP architecture with closed loop performance controller

Publications (2)

Publication Number Publication Date
CN108984282A CN108984282A (zh) 2018-12-11
CN108984282B true CN108984282B (zh) 2022-04-05

Family

ID=64459615

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810562661.1A Active CN108984282B (zh) 2017-06-04 2018-06-04 具有闭环性能控制器的amp体系结构的调度器

Country Status (3)

Country Link
US (8) US10884811B2 (zh)
CN (1) CN108984282B (zh)
WO (4) WO2018226299A1 (zh)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10884811B2 (en) 2017-06-04 2021-01-05 Apple Inc. Scheduler for AMP architecture with closed loop performance controller using static and dynamic thread grouping
US10656700B2 (en) * 2017-07-10 2020-05-19 Oracle International Corporation Power management in an integrated circuit
EP3750057B1 (en) * 2018-02-08 2022-10-19 Alibaba Group Holding Limited Hybrid system-on-chip for power and performance prediction and control
US10725531B1 (en) * 2018-05-15 2020-07-28 Amazon Technologies, Inc. Mitigating thermal increases in electronic devices
US11042406B2 (en) * 2018-06-05 2021-06-22 Intel Corporation Technologies for providing predictive thermal management
US10452454B1 (en) 2018-06-07 2019-10-22 International Business Machines Corporation Instructing the use of application programming interface commands in a runtime environment
US11032342B2 (en) * 2018-07-05 2021-06-08 Samsung Electronics Co., Ltd. System and method for device audio
CN118152106A (zh) * 2018-10-11 2024-06-07 华为技术有限公司 资源调度方法和终端设备
CN109739335B (zh) * 2018-12-21 2020-12-25 重庆汇锋金鸿科技有限公司 一种基于拟态计算的微处理器及数据处理方法
US11182205B2 (en) * 2019-01-02 2021-11-23 Mellanox Technologies, Ltd. Multi-processor queuing model
US11054891B2 (en) * 2019-05-09 2021-07-06 Google Llc Resonance aware performance management
US11567555B2 (en) * 2019-08-30 2023-01-31 Intel Corporation Software assisted power management
WO2021063505A1 (en) * 2019-10-02 2021-04-08 Telefonaktiebolaget Lm Ericsson (Publ) Object detection
US20210109795A1 (en) * 2019-10-11 2021-04-15 Microsoft Technology Licensing, Llc Latency-Aware Thread Scheduling
US11709748B2 (en) 2019-11-21 2023-07-25 Apple Inc. Adaptive memory performance control by thread group
CN110928661B (zh) * 2019-11-22 2023-06-16 北京浪潮数据技术有限公司 一种线程迁移方法、装置、设备及可读存储介质
CN111309514B (zh) * 2020-02-21 2021-06-01 吉林大学 一种gpgpu寄存器的纠错码生成方法
US11494236B2 (en) * 2020-05-06 2022-11-08 EMP IP Holding Company, LLC System and method for sharing central processing unit (CPU) resources with unbalanced applications
CN111813552B (zh) * 2020-07-16 2021-12-03 济南浪潮数据技术有限公司 一种基于多线程任务的调度执行方法、装置和介质
CN112131008B (zh) * 2020-09-28 2024-04-19 芯瞳半导体技术(山东)有限公司 一种调度线程束warp的方法、处理器及计算机存储介质
CN115562846A (zh) * 2021-07-01 2023-01-03 华为技术有限公司 一种资源调度的方法、装置及计算节点
US12002142B2 (en) * 2021-07-12 2024-06-04 Qualcomm Incorporated Performance overhead optimization in GPU scoping
JP2023021662A (ja) * 2021-08-02 2023-02-14 富士通株式会社 プログラムおよび管理方法
US20230067109A1 (en) * 2021-08-30 2023-03-02 Apple Inc. Performance islands for cpu clusters
US11797045B2 (en) 2021-09-22 2023-10-24 Qualcomm Incorporated Dynamic voltage and frequency scaling (DVFS) within processor clusters
TW202318151A (zh) * 2021-09-22 2023-05-01 美商高通公司 處理器集群內的動態電壓和頻率縮放(dvfs)
EP4156749A1 (en) * 2021-09-28 2023-03-29 Nokia Solutions and Networks Oy Apparatus, method, and computer program
CN114003363B (zh) * 2021-11-01 2022-07-22 支付宝(杭州)信息技术有限公司 线程间中断信号发送方法及装置
US11768531B2 (en) * 2021-12-30 2023-09-26 Western Digital Technologies, Inc. Power management for storage controllers
KR20230106865A (ko) * 2022-01-07 2023-07-14 울산과학기술원 스레드 할당 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치
WO2023141370A1 (en) * 2022-01-18 2023-07-27 Commscope Technologies Llc Optimizing total core requirements for virtualized systems
US11687148B1 (en) 2022-04-26 2023-06-27 International Business Machines Corporation Stacked, reconfigurable co-regulation of processing units for ultra-wide DVFS
US12067246B2 (en) 2022-10-17 2024-08-20 Dell Products L.P. Data storage system with dynamic workload adjustment based on headroom estimation
US20240330048A1 (en) * 2023-03-30 2024-10-03 Intel Corporation Apparatus and method for dynamic core management

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103677997A (zh) * 2012-09-21 2014-03-26 宏达国际电子股份有限公司 多核心装置以及其多线程调度方法
CN105511591A (zh) * 2015-12-31 2016-04-20 天津飞腾信息技术有限公司 基于双阈值功耗自适应的dvfs调节算法

Family Cites Families (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5345567A (en) 1991-06-10 1994-09-06 International Business Machines Corporation System and method for modifying program status word system mask, system access key, and address space code with overlap enabled
US6021425A (en) 1992-04-03 2000-02-01 International Business Machines Corporation System and method for optimizing dispatch latency of tasks in a data processing system
DK94693D0 (da) 1993-08-19 1993-08-19 Coloplast As Ikke-fibroest poroest materiale, saarbandage omfattende en saadan bandage samt fremgangsmaade til fremstilling af materialet
US5812844A (en) 1995-12-07 1998-09-22 Microsoft Corporation Method and system for scheduling the execution of threads using optional time-specific scheduling constraints
US5974438A (en) 1996-12-31 1999-10-26 Compaq Computer Corporation Scoreboard for cached multi-thread processes
US6329877B1 (en) 1999-06-25 2001-12-11 Agere Systems Guardian Corp. Efficient power amplifier
US6901491B2 (en) 2001-10-22 2005-05-31 Sun Microsystems, Inc. Method and apparatus for integration of communication links with a remote direct memory access protocol
US7770034B2 (en) 2003-12-16 2010-08-03 Intel Corporation Performance monitoring based dynamic voltage and frequency scaling
US7478198B2 (en) 2004-05-24 2009-01-13 Intel Corporation Multithreaded clustered microarchitecture with dynamic back-end assignment
US7386739B2 (en) 2005-05-03 2008-06-10 International Business Machines Corporation Scheduling processor voltages and frequencies based on performance prediction and power constraints
US7562234B2 (en) 2005-08-25 2009-07-14 Apple Inc. Methods and apparatuses for dynamic power control
US8713574B2 (en) 2006-06-05 2014-04-29 International Business Machines Corporation Soft co-processors to provide a software service function off-load architecture in a multi-core processing environment
US8041929B2 (en) 2006-06-16 2011-10-18 Cisco Technology, Inc. Techniques for hardware-assisted multi-threaded processing
US20080263324A1 (en) 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
US7840825B2 (en) 2006-10-24 2010-11-23 International Business Machines Corporation Method for autonomous dynamic voltage and frequency scaling of microprocessors
US20080163183A1 (en) 2006-12-29 2008-07-03 Zhiyuan Li Methods and apparatus to provide parameterized offloading on multiprocessor architectures
US7774626B2 (en) 2007-03-29 2010-08-10 Intel Corporation Method to control core duty cycles using low power modes
US8589943B2 (en) 2007-08-15 2013-11-19 Sony Computer Entertainment Inc. Multi-threaded processing with reduced context switching
US7794103B2 (en) 2007-08-16 2010-09-14 Hoover Scott C Parking space barrier block with photovoltaic illumination
US8082234B2 (en) * 2007-11-19 2011-12-20 Teradata Us, Inc. Closed-loop system management method and process capable of managing workloads in a multi-system database environment
US20090144744A1 (en) 2007-11-29 2009-06-04 Gunnels John A Performance Evaluation of Algorithmic Tasks and Dynamic Parameterization on Multi-Core Processing Systems
WO2009083753A1 (en) 2007-12-28 2009-07-09 Freescale Semiconductor, Inc. Data processor performance prediction
US20090271646A1 (en) 2008-04-24 2009-10-29 Vanish Talwar Power Management Using Clustering In A Multicore System
US8561073B2 (en) 2008-09-19 2013-10-15 Microsoft Corporation Managing thread affinity on multi-core processors
US8261112B2 (en) 2008-12-08 2012-09-04 International Business Machines Corporation Optimizing power consumption by tracking how program runtime performance metrics respond to changes in operating frequency
US20110022870A1 (en) 2009-07-21 2011-01-27 Microsoft Corporation Component power monitoring and workload optimization
US8527796B2 (en) * 2009-08-24 2013-09-03 Intel Corporation Providing adaptive frequency control for a processor using utilization information
US8276142B2 (en) 2009-10-09 2012-09-25 Intel Corporation Hardware support for thread scheduling on multi-core processors
US8892931B2 (en) 2009-10-20 2014-11-18 Empire Technology Development Llc Power channel monitor for a multicore processor
KR101617377B1 (ko) 2009-11-06 2016-05-02 삼성전자주식회사 동적 전압 주파수 스케일링 방법
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
US9176572B2 (en) 2009-12-16 2015-11-03 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US8495604B2 (en) 2009-12-30 2013-07-23 International Business Machines Corporation Dynamically distribute a multi-dimensional work set across a multi-core system
US8533719B2 (en) 2010-04-05 2013-09-10 Oracle International Corporation Cache-aware thread scheduling in multi-threaded systems
US8898664B2 (en) 2010-06-01 2014-11-25 Microsoft Corporation Exposure of virtual cache topology to a guest operating system
US8738860B1 (en) 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
US8589938B2 (en) * 2011-03-03 2013-11-19 International Business Machines Corporation Composite contention aware task scheduling
US8788866B2 (en) 2011-04-25 2014-07-22 Qualcomm Incorporated Method and system for reducing thermal load by monitoring and controlling current flow in a portable computing device
US9158592B2 (en) * 2011-05-02 2015-10-13 Green Hills Software, Inc. System and method for time variant scheduling of affinity groups comprising processor core and address spaces on a synchronized multicore processor
US9183047B2 (en) * 2011-05-13 2015-11-10 Samsung Electronics Co., Ltd. Classifying requested application based on processing and response time and scheduling threads of the requested application according to a preset group
US20130060555A1 (en) 2011-06-10 2013-03-07 Qualcomm Incorporated System and Apparatus Modeling Processor Workloads Using Virtual Pulse Chains
ITTO20110518A1 (it) 2011-06-13 2012-12-14 St Microelectronics Srl Procedimento e sistema di schedulazione, griglia computazionale e prodotto informatico relativi
WO2013001614A1 (ja) * 2011-06-28 2013-01-03 富士通株式会社 データ処理方法およびデータ処理システム
KR101812583B1 (ko) 2011-07-21 2018-01-30 삼성전자주식회사 태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체
WO2013063486A1 (en) 2011-10-28 2013-05-02 The Regents Of The University Of California Multiple-core computer processor for reverse time migration
US8904209B2 (en) 2011-11-14 2014-12-02 Microsoft Corporation Estimating and managing power consumption of computing devices using power models
US9239611B2 (en) * 2011-12-05 2016-01-19 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including balancing power among multi-frequency domains of a processor based on efficiency rating scheme
US8707314B2 (en) 2011-12-16 2014-04-22 Advanced Micro Devices, Inc. Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations
US9329877B2 (en) 2012-03-18 2016-05-03 Microsoft Technology Licensing, Llc Static verification of parallel program code
WO2013154539A1 (en) * 2012-04-10 2013-10-17 Empire Technology Development Llc Balanced processing using heterogeneous cores
US9286116B2 (en) 2012-07-06 2016-03-15 Microsoft Technology Licensing, Llc Multiple core real-time task execution
KR101991682B1 (ko) * 2012-08-29 2019-06-21 삼성전자 주식회사 Dvfs 제어 방법 및 이를 이용한 시스템-온 칩
KR102038427B1 (ko) * 2012-09-28 2019-10-31 삼성전자 주식회사 온도별 전압 제어 방법 및 이를 지원하는 단말기
US20140189302A1 (en) 2012-12-28 2014-07-03 Intel Corporation Optimal logical processor count and type selection for a given workload based on platform thermals and power budgeting constraints
US9208113B2 (en) 2013-01-15 2015-12-08 Apple Inc. Deferred inter-processor interrupts
US9367357B2 (en) 2013-01-18 2016-06-14 Nec Corporation Simultaneous scheduling of processes and offloading computation on many-core coprocessors
US9396012B2 (en) 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors
US10133323B2 (en) 2013-03-14 2018-11-20 Arizona Board Of Regents For And On Behalf Of Arizona State University Processor control system
CN104102322B (zh) * 2013-04-07 2018-08-03 索尼公司 延长cpu睡眠时间的方法及装置
US9984430B2 (en) 2013-04-15 2018-05-29 Intel Corporation Ordering threads as groups in a multi-threaded, multi-core graphics compute system
CN105247486B (zh) 2013-05-23 2019-05-21 瑞萨电子株式会社 多cpu系统及多cpu系统的调整方法
US9274585B2 (en) 2013-06-13 2016-03-01 Advanced Micro Devices, Inc. Combined dynamic and static power and performance optimization on data centers
US9143403B2 (en) * 2013-06-19 2015-09-22 Hewlett-Packard Development Company, L.P. Autonomous metric tracking and adjustment
US9304573B2 (en) 2013-06-21 2016-04-05 Apple Inc. Dynamic voltage and frequency management based on active processors
US9430014B2 (en) 2013-07-18 2016-08-30 Qualcomm Incorporated System and method for idle state optimization in a multi-processor system on a chip
KR102135100B1 (ko) 2013-08-23 2020-07-17 삼성전자주식회사 전자 장치의 동적 전압 주파수 제어 방법 및 장치
US10083465B2 (en) 2013-09-06 2018-09-25 Facebook, Inc. Allocating information for content selection among computing resources of an online system
US9405345B2 (en) * 2013-09-27 2016-08-02 Intel Corporation Constraining processor operation based on power envelope information
US20150113542A1 (en) 2013-10-17 2015-04-23 Nec Laboratories America, Inc. Knapsack-based sharing-aware scheduler for coprocessor-based compute clusters
KR20150050135A (ko) * 2013-10-31 2015-05-08 삼성전자주식회사 복수의 이종 코어들을 포함하는 전자 시스템 및 이의 동작 방법
US9541985B2 (en) * 2013-12-12 2017-01-10 International Business Machines Corporation Energy efficient optimization in multicore processors under quality of service (QoS)/performance constraints
US9916162B2 (en) 2013-12-26 2018-03-13 Intel Corporation Using a global barrier to synchronize across local thread groups in general purpose programming on GPU
JP6246603B2 (ja) 2014-01-21 2017-12-13 ルネサスエレクトロニクス株式会社 タスクスケジューラ機構、オペレーティングシステム及びマルチプロセッサシステム
US9671857B2 (en) * 2014-03-25 2017-06-06 Qualcomm Incorporated Apparatus, system and method for dynamic power management across heterogeneous processors in a shared power domain
US9921881B2 (en) 2014-05-27 2018-03-20 Sybase, Inc. Optimizing performance in CEP systems via CPU affinity
US9619012B2 (en) * 2014-05-30 2017-04-11 Apple Inc. Power level control using power assertion requests
US20150355700A1 (en) * 2014-06-10 2015-12-10 Qualcomm Incorporated Systems and methods of managing processor device power consumption
US9513689B2 (en) * 2014-06-30 2016-12-06 Intel Corporation Controlling processor performance scaling based on context
US9600392B2 (en) * 2014-08-11 2017-03-21 International Business Machines Corporation Tracking pipelined activity during off-core memory accesses to evaluate the impact of processor core frequency changes
US9665161B2 (en) 2014-08-27 2017-05-30 Mediatek Inc. Method and computer-readable medium for dynamically managing power of multi-core processor
CN105829991B (zh) 2014-09-17 2020-02-04 联发科技股份有限公司 操作计算系统的方法及其计算系统
US10339023B2 (en) 2014-09-25 2019-07-02 Intel Corporation Cache-aware adaptive thread scheduling and migration
US20160091950A1 (en) * 2014-09-26 2016-03-31 Apple Inc. Peak current management
US9582052B2 (en) * 2014-10-30 2017-02-28 Qualcomm Incorporated Thermal mitigation of multi-core processor
US9977699B2 (en) 2014-11-17 2018-05-22 Mediatek, Inc. Energy efficient multi-cluster system and its operations
US20160147280A1 (en) 2014-11-26 2016-05-26 Tessil Thomas Controlling average power limits of a processor
US9710043B2 (en) * 2014-11-26 2017-07-18 Intel Corporation Controlling a guaranteed frequency of a processor
US9477533B2 (en) 2014-12-26 2016-10-25 Intel Corporation Progress meters in parallel computing
US20160210174A1 (en) 2015-01-15 2016-07-21 Microsoft Corporation Hybrid Scheduler and Power Manager
US20160225042A1 (en) 2015-02-02 2016-08-04 Linkedln Corporation Determining a cost of an application programming interface
US10234930B2 (en) 2015-02-13 2019-03-19 Intel Corporation Performing power management in a multicore processor
JP6079805B2 (ja) 2015-03-23 2017-02-15 日本電気株式会社 並列計算装置
US9625984B2 (en) 2015-03-27 2017-04-18 Intel Corporation Technologies for managing power during an activation cycle
US9652027B2 (en) * 2015-04-01 2017-05-16 Microsoft Technology Licensing, Llc Thread scheduling based on performance state and idle state of processing units
US10031574B2 (en) 2015-05-20 2018-07-24 Mediatek Inc. Apparatus and method for controlling multi-core processor of computing system
US20160378471A1 (en) 2015-06-25 2016-12-29 Intel IP Corporation Instruction and logic for execution context groups for parallel processing
CN106406157B (zh) 2015-07-30 2021-02-02 松下知识产权经营株式会社 信息终端的控制方法以及节能支援系统
US20170031724A1 (en) 2015-07-31 2017-02-02 Futurewei Technologies, Inc. Apparatus, method, and computer program for utilizing secondary threads to assist primary threads in performing application tasks
US10187282B2 (en) 2015-10-01 2019-01-22 Qualcomm Incorporated System and method for modem management based on key performance indicators
US20170097854A1 (en) 2015-10-01 2017-04-06 Qualcomm Innovation Center, Inc. Task placement for related tasks in a cluster based multi-core system
US9983644B2 (en) 2015-11-10 2018-05-29 Intel Corporation Dynamically updating at least one power management operational parameter pertaining to a turbo mode of a processor for increased performance
US10712789B2 (en) * 2015-12-18 2020-07-14 Intel Corporation Integrated circuit thermal throttling with workload adapted thermal sensor maximum temperature
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10168752B2 (en) 2016-03-08 2019-01-01 Qualcomm Incorporated Systems and methods for determining a sustained thermal power envelope comprising multiple heat sources
US10496141B2 (en) * 2016-03-17 2019-12-03 Qualcomm Incorporated System and method for intelligent thermal management in a system on a chip having a heterogeneous cluster architecture
US9968011B2 (en) * 2016-04-29 2018-05-08 Dell Products L.P. Systems and methods for dynamically updated thermal options based on thermal state
US10437313B2 (en) 2016-06-10 2019-10-08 Apple Inc. Processor unit efficiency control
US10452437B2 (en) * 2016-06-24 2019-10-22 Advanced Micro Devices, Inc. Temperature-aware task scheduling and proactive power management
US10048741B1 (en) 2017-01-26 2018-08-14 Advanced Micro Devices, Inc. Bandwidth-aware multi-frequency performance estimation mechanism
WO2018156153A1 (en) 2017-02-24 2018-08-30 Intel Corporation Configuration of base clock frequency of processor based on usage parameters
US11360808B2 (en) 2017-04-09 2022-06-14 Intel Corporation Efficient thread group scheduling
US10289179B2 (en) * 2017-04-21 2019-05-14 Intel Corporation Dynamic control of liquid cooling pumps to provide thermal cooling uniformity
US10884811B2 (en) 2017-06-04 2021-01-05 Apple Inc. Scheduler for AMP architecture with closed loop performance controller using static and dynamic thread grouping
US10895903B2 (en) * 2018-06-02 2021-01-19 Apple Inc. Package power zone for limiting power consumption even when individual consumers do not exceed individual limits

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103677997A (zh) * 2012-09-21 2014-03-26 宏达国际电子股份有限公司 多核心装置以及其多线程调度方法
CN105511591A (zh) * 2015-12-31 2016-04-20 天津飞腾信息技术有限公司 基于双阈值功耗自适应的dvfs调节算法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Thread shuffling: Combining DVFS and thread migration to reduce energy consumptions for multi-core systems;Qiong Cai等;《IEEE/ACM International Symposium on Low Power Electronics and Design》;IEEE;20110822;第379-384页 *
多核处理器功耗和性能模型;刘辛;《中国优秀硕士学位论文全文数据库(电子期刊)》;中国学术期刊(光盘版)电子杂志社;20170315(第3期);I137-138页 *

Also Published As

Publication number Publication date
US10599481B2 (en) 2020-03-24
US20180349177A1 (en) 2018-12-06
US20180349182A1 (en) 2018-12-06
US20190034238A1 (en) 2019-01-31
WO2018226301A1 (en) 2018-12-13
US10956220B2 (en) 2021-03-23
US20180349191A1 (en) 2018-12-06
US10884811B2 (en) 2021-01-05
US11080095B2 (en) 2021-08-03
US11360820B2 (en) 2022-06-14
WO2018226300A1 (en) 2018-12-13
US20180349186A1 (en) 2018-12-06
CN108984282A (zh) 2018-12-11
US20180349176A1 (en) 2018-12-06
WO2018226302A1 (en) 2018-12-13
US20210318909A1 (en) 2021-10-14
US10417054B2 (en) 2019-09-17
WO2018226299A1 (en) 2018-12-13
US20180349175A1 (en) 2018-12-06
US11579934B2 (en) 2023-02-14
US11231966B2 (en) 2022-01-25

Similar Documents

Publication Publication Date Title
CN108984282B (zh) 具有闭环性能控制器的amp体系结构的调度器
CN106537348B (zh) 用于数据处理系统的功率感知作业调度器和管理器
Albers Energy-efficient algorithms
Bini et al. Resource management on multicore systems: The ACTORS approach
US8997107B2 (en) Elastic scaling for cloud-hosted batch applications
US9973512B2 (en) Determining variable wait time in an asynchronous call-back system based on calculated average sub-queue wait time
Albers Algorithms for dynamic speed scaling
US20120102503A1 (en) Green computing via event stream management
US11422857B2 (en) Multi-level scheduling
JPWO2005106623A1 (ja) Cpuクロック制御装置、cpuクロック制御方法、cpuクロック制御プログラム、記録媒体、及び伝送媒体
US20120297216A1 (en) Dynamically selecting active polling or timed waits
US11119788B2 (en) Serialization floors and deadline driven control for performance optimization of asymmetric multiprocessor systems
US10275007B2 (en) Performance management for a multiple-CPU platform
CN104756043B (zh) 用于以有保证的瞬态最后期限来控制中央处理单元功率的系统和方法
Tsenos et al. Energy efficient scheduling for serverless systems
WO2016058149A1 (zh) 一种预测处理器利用率的方法、处理装置和终端设备
US11709748B2 (en) Adaptive memory performance control by thread group
Lee et al. Power-efficient Big. LITTLE core assignment scheme for task graph based real-time smartphone applications
Chantem et al. An Online Holistic Scheduling Framework for Energy-Constrained Wireless Real-Time Systems

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