用于基于中央处理单元功率特性来调度软件任务的系统和方法与流程

文档序号:19159047发布日期:2019-11-16 01:08阅读:211来源:国知局
用于基于中央处理单元功率特性来调度软件任务的系统和方法与流程

相关申请

本申请要求于2017年3月31日提交的、题为“systemandmethodsforschedulingsoftwaretasksbasedoncentralprocessingunitpowercharacteristics”的美国临时申请no.62/480,092的权益,在此通过引用的方式并入上述申请的完整内容。



背景技术:

各种计算设备对性能和特征的需求日益增长,已经使得制造商在计算设备中包括多个中央处理器单元(cpu),以处理更多的能力和更重的工作负载,同时执行得比前几代更快。一些架构包括布置成集群的cpu,用于执行不同的任务和支持不同的能力。计算设备可以包括多集群cpu系统以处理计算设备的软件和子系统的需求。在一些设计中,多个处理核(例如,2个、4个、8个或更多)可以包括在单个处理器设备中,其可以被称为多核处理器或多核cpu。

计算设备可以配置有例如通过wlan连接来发送和/或接收无线数据的应用。通过设备上的各种软件和硬件交互来启用此类连接。具体而言,cpu可以执行包括用户发起的应用、传输控制协议(tcp)/互联网协议(ip)栈以及与无线局域网(wlan)接口(例如,网卡、网络接口控制器等)对接的wlan驱动器。在多核cpu中,这些软件任务通常是基于确保峰值吞吐量来在核上进行调度的,而不考虑如何利用cpu核。但是,对wlan驱动器和tcp/ip栈软件的这种调度会对整体cpu功率产生很大影响。结果,可能使用大量功率来支持计算设备上的wlan应用,这可能快速地消耗便携式计算设备(例如,智能电话、平板电脑等)上的电池寿命。此外,计算设备的整体性能可能受到这种功率使用的影响,例如,由于在功率过高以及热量不能足够快地消散时触发的热关闭。



技术实现要素:

各个实施例提供了用于在具有多个处理核的计算设备中调度处理任务的设备和方法,所述多个处理核可以包括低功率处理器核的组和/或高性能处理器核。各个实施例可以包括:识别与和无线局域网(wlan)的通信相关的多个应用流;计算针对多个应用流的总wlan吞吐量要求;确定总wlan吞吐量要求是否小于第一门限值;以及响应于确定总wlan吞吐量要求小于第一门限值,在低功率处理器核中的一个低功率处理器核上调度用于多个应用流的所有处理任务。在一些实施例中,第一门限值可以是基于低功率处理器核的功率特性的。

一些实施例还可以包括:响应于确定总wlan吞吐量要求不小于第一门限值,确定总wlan吞吐量要求是否小于第二门限值。在一些实施例中,第二门限值可以与功率简档曲线的变化相对应,所述功率简档曲线用于测量低功率处理器核随工作负载变化的功耗。

一些实施例还可以包括:响应于确定总wlan吞吐量要求小于第二门限值,在低功率处理器核中的至少一个低功率处理器核上调度用于多个应用流的所有处理任务。

一些实施例还可以包括:响应于确定总wlan吞吐量要求不小于第二门限值,通过在所有低功率处理器核之间分配用于多个应用流的处理任务来调度所述任务。

在一些实施例中,在所有低功率处理器核之间分配任务降低了在低功率处理器核之中的平均频率。在一些实施例中,降低在低功率处理器核之中的平均频率可以基于性能比功耗更低的增加速率来提供功率优势。

在一些实施例中,用于多个应用流的处理任务可以至少包括wlan驱动器软件和互联网协议(ip)栈软件。在一些实施例中,性能核在调度期间可以是关闭的。在一些实现方式和情况中,整个性能集群的核在调度期间可以是关闭的。

各个实施例可以包括具有处理设备的计算设备,所述处理设备具有多个处理核,所述多个处理核可以包括低功率处理器核的组和/或高性能处理器核,并且被配置有处理器可执行指令以执行上文概述的方法中的任意方法的操作。各个实施例可以包括具有用于执行上文概述的方法中的任意方法的功能的单元的计算设备。各个实施例可以包括非临时性处理器可读介质,所述非临时性处理器可读介质具有存储在其上的被配置为使处理设备执行上文概述的方法中的任意方法的操作的处理器可执行指令。

附图说明

并入本文中并且作为本说明的组成部分的附图示出了各个实施例的示例实施例,并且连同上面给出的概括描述和下面给出的详细描述一起用于解释权利要求的特征。

图1是示出适于实现实施例的计算设备的组件框图。

图2是示出适于实现实施例的示例多核处理器的组件框图。

图3a是适用于实现实施例的片上系统的功能和组件框图。

图3b是根据各个实施例的多核集群以及相关过程的功能和组件框图。

图4a是示出应用处理器中的功率集群的代表性核的功率简档(profile)曲线的图。

图4b是根据各个实施例示出针对示例应用处理器的功耗的估计改进的图。

图5a和图5b是示出各个实施例中用于在低功率处理器核上调度任务的方法的过程流图。

图6是示出适于与各个实施例一起使用的示例移动计算设备的组件框图。

图7是示出适于与各个实施例一起使用的示例移动计算设备的组件框图。

图8是示出适于与各个实施例一起使用的示例服务器的组件框图。

具体实施方式

将参考附图对各个实施例进行详细描述。在所有附图中将尽可能使用相同的附图标记来指代相同或相似的部分。对特定示例和实现方式的参考是用于说明的目的,并且不旨在限制权利要求书的范围。

各种实施例包括实现用于基于特定cpu(即,应用cpu)的功率特性来动态地调度wlan软件任务的这种方法的方法、系统和设备。在各种实施例中,wlan子系统可以周期性地监测由用户发起的吞吐量和应用流的数量,并且可以基于吞吐量和应用流,在应用处理器的核上调度某些wlan任务(例如,ip栈和驱动器软件)以使功率使用最小化。

术语“计算设备”和“移动计算设备”在本文中可互换使用,以指代下列各项中的任意一项或所有:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数据助理(pda)、膝上型计算机、平板计算机、可转换笔记本电脑/平板电脑(二合一电脑)、智能本、超级本、上网本、掌上电脑、无线电子邮件接收机、支持多媒体互联网的蜂窝电话、移动游戏控制台、无线游戏控制器以及包括存储器和可编程处理器的类似的个人电子设备。术语“计算设备”还可以指固定计算设备,包括个人计算机、桌面式计算机、一体式计算机、工作站、超级计算机、大型计算机、嵌入式计算机、服务器、家庭影院计算机和游戏控制台。

如本文中所使用的,术语“应用”可以包括具有可执行内容的文件,例如:对象代码、脚本、字节代码、标记语言文件和补丁。此外,“应用”在本文中还可以包括在性质上不可执行的文件,例如可能需要打开的文档或需要访问的其它数据文件。

术语“工作负载”、“处理负载”、“处理工作负载”和“代码块”可互换使用,并且通常指向处理负担,或者处理负担的百分比,其与给定实施例中的给定处理组件相关联,或者被指派给给定实施例中的给定处理组件。术语“dmips”表示处理每秒给定数百万条指令(mips)所需的dhrystone迭代数量(即,dhrystonemips(dmips))。在本说明书中,dmips术语用作测量的一般单位来指示示例性实施例中处理器性能的相对水平,并且不应该解释为暗示落入权利要求书的范围之内的任何给定的实施例必须包括或必须不包括具有任何特定的dhrystone评级的处理器。

术语“处理设备”、“片上系统”(soc)和“集成电路”在本文中可互换使用以指代互连的电子电路的集合,其通常但非排他地包括多个硬件核、存储器和通信接口。硬件核可以具有各种不同类型的处理器,例如通用多核处理器、多核应用处理器/中央处理单元(cpu)、多核数字信号处理器(dsp)、多核图形处理单元(gpu)、多核加速处理单元(apu)以及多核辅助处理器。硬件核还可以体现其它硬件和硬件组合,比如现场可编程门阵列(fpga)、专用集成电路(asic)、其它可编程逻辑器件、离散门逻辑器件、晶体管逻辑、性能监测硬件、看门狗硬件和时间参考。可以配置集成电路以使得集成电路的组件驻留在单片半导体材料(比如硅)上。这种配置也可以称为单个芯片上的集成电路(ic)组件。

图1示出了适合于与各个实施例一起使用的计算设备10的示例。计算设备10可以包括具有处理器14、存储器16、通信接口18和存储接口20的soc12形式的处理设备。计算设备还可以包括通信组件22,例如有线或无线调制解调器、存储组件24、用于建立到无线网络30的无线连接32的天线26,和/或用于连接到去往互联网40的有线连接44的网络接口28。计算设备10可以通过无线连接32和/或有线连接44与远程计算设备50通信。处理器14可以包括各种处理设备中的任何处理设备,例如,多个处理器核。

soc12可以包括一个或多个处理器14。计算设备10可以包括一个或多个soc12,从而增加了处理器14和处理器核的数量。计算设备10还可以包括不与soc12相关联的处理器14。处理器14均可以被配置用于特定目的,其可以与计算设备10的其它处理器14相同或不同。各个处理器14可以是如下文参考图2所描述的多核处理器。处理器14均可以被配置用于特定目的,其可以与计算设备10的其它处理器14相同或不同。可以将相同或不同配置的处理器14和处理器核中的一者或多者成组在一起。处理器核的组可以被称为多核集群。

soc12的存储器16可以是易失性或非易失性存储器,其被配置用于存储数据和处理器可执行代码以供处理器14访问。计算设备10和/或soc12可以包括被配置用于各种目的的一个或多个存储器16。一个或多个存储器16可以包括易失性存储器,比如随机存取存储器(ram)或主存储器,或高速缓存存储器。这些存储器16可以被配置为:暂时保存(hold)从数据传感器或子系统接收的有限数量的数据,从非易失性存储器请求、在基于各种因素预期未来访问时从非易失性存储器加载到存储器16的数据和/或处理器可执行代码指令,和/或由处理器14产生并且暂时存储以供在不存储在非易失性存储器中的情况下的未来快速访问的中间处理数据和/或处理器可执行代码指令。

存储器16可以被配置为至少临时地存储从另一个存储器设备(比如另一个存储器16或储存存储器24)加载到存储器16的数据和处理器可执行代码,以用于由处理器14中的一个或多个处理器访问。加载到存储器16的数据或处理器可执行代码可以响应于由处理器14执行的功能来被加载。响应于对功能的执行来将数据或处理器可执行代码加载到存储器16可能是由于不成功或未命中的对存储器16的存储器访问请求,因为所请求的数据或处理器可执行代码没有位于存储器16中。响应于未命中,可以对另一个存储器16或储存存储器24做出存储器访问请求,以将所请求的数据或处理器可执行代码从另一个存储器16或储存存储器24加载到存储器设备16。响应于对功能的执行将数据或处理器可执行代码加载到存储器16可能是由于对另一个存储器16或储存存储器24的存储器访问请求,并且数据或处理器可执行代码可以被加载到存储器16以供以后访问。

储存存储器接口20和储存存储器24可以协同工作以允许计算设备10将数据和处理器可执行代码存储在非易失性储存介质上。储存存储器24可以非常像存储器16的实施例地配置,其中,储存存储器24可以存储数据或处理器可执行代码以供处理器14中的一个或多个处理器访问。储存存储器24是非易失性的,可以在计算设备10的电源已经被关闭之后保留信息。当重新接通电源并且计算设备10重新启动时,存储在储存存储器24上的信息可以对计算设备10可用。储存存储器接口20可以控制对储存存储器24的访问,并且允许处理器14从储存存储器24读取数据以及将数据写入储存存储器24。

通信接口18、通信组件22,天线26和/或网络接口28可以协同工作以使计算设备10能够经由无线连接32通过无线网络30和/或有线连接44来与远程计算设备50进行通信。无线网络30可以使用各种无线通信技术来实现(包括例如用于无线通信的射频频谱),以向计算设备10提供到互联网40的连接,通过该连接,计算设备10可以与远程计算设备50交换数据。

虽然处理设备在图1中示为soc12,但处理设备可以具有不同的形式,例如芯片组、具有多个的印刷电路板、芯片、多处理器核等。此外,计算设备10的组件中的一些或所有组件可以不同地布置和/或组合,同时仍然提供必要的功能。此外,计算设备10可以不限于组件中的每个组件中的一个组件,并且在各种配置中,每个组件的多个实例可以包括在计算设备10中。

图2示出了适合于实现实施例的以多核处理器14形式的处理设备。多核处理器14(例如应用cpu)可以具有多个同构或异构处理器核200、201、202、203。处理器核200、201、202、203可以是同构的,因为单个处理器14的处理器核200、201、202、203可以被配置用于相同的目的并且具有相同或相似的性能特性。例如,处理器14可以是通用处理器,并且处理器核200、201、202、203可以是同构通用处理器核。替代地,处理器14可以是图形处理单元或数字信号处理器,并且处理器核200、201、202、203可以分别是同构图形处理器核或数字信号处理器核。为了便于参考,术语“处理器”和“处理器核”在本文中可互换地使用。

处理器核200、201、202、203可以是异构的,因为单个处理器14的处理器核200、201、202、203可以被配置用于不同目的和/或具有不同的性能特性。这种异构处理器核的异构性可以包括不同的指令集架构、流水线、操作频率等。这种异构处理器核的示例可以包括所谓的“big.little”架构,其中,较慢的低功率处理器核可以与更强大并且耗电的处理器核耦合。在类似的实施例中,soc12可以包括多个同构或异构处理器14。

在图2所示的示例中,多核处理器14包括四个处理器核200、201、202、203(即,处理器核0、处理器核1、处理器核2和处理器核3)。为了便于解释,本文中的示例可以指代图2中示出的四个处理器核200、201、202、203。然而,图2中示出并且在本文中描述的四个处理器核200、201、202、203仅作为示例提供,并且决不意味着将各种实施例限制为四核处理器系统。计算设备10、soc12或处理器14可以单独地或组合地包括比本文中示出和描述的四个处理器核200、201、202、203更少或更多的处理器核。

图3a示出了具有soc12形式的处理设备的计算设备10,所述soc12包括适合于实现各个实施例的多组处理器核。关于图1-图3a,多组处理器核可以布置在多核集群306、308、310、312、314中。计算设备10还可以包括高级操作系统302,其可以被配置为与soc12的组件通信并且操作内核调度器304以用于管理指派给各个处理器核的进程或任务。在各个实施例中,内核调度器304可以是高级操作系统302的一部分或与高级操作系统302分开。

图3中示出的不同类型的多核集群还可以成组为不同处理器或处理单元的一部分。例如,soc12可以并入应用cpu,其包括高性能多核集群(“高功率cpu集群”)306和低性能多核集群(“低功率cpu集群”)308。soc12还可以具有多核图形处理单元(gpu)和多核数字信号处理器(dsp),它们均具有至少一个多核集群。例如,soc可以包括gpu集群310和dsp集群,以及其它处理器核和/或多核集群314。

图3a还示出了处理器核314可以在其被出售之后安装在计算设备中,比如作为对处理能力的扩展或增强或者作为对计算设备的更新。对处理能力的售后扩展不限于中央处理器核,并且可以是可以添加到计算系统中或在计算系统中替换的任何类型的计算模块,包括:例如,额外的、升级的或替换调制解调器处理器,额外或替换图形处理器(gpu),额外或替换音频处理器,以及额外或替换dsp,其中任何项可以安装为单芯片多核模块或处理器的集群(例如,在soc上)。此外,在服务器中,这种添加或替换的处理器组件可以安装为插入插座(receptacle)和线束接口(wiringharnessinterface)的处理模块(或叶片)。

图3中示出的处理器核组中的每组处理器核可以是上述多核处理器14的一部分。此外,五个示例多核集群不意在进行限制,并且计算设备10或soc12可以单独地或组合地包括多于或少于五个多核集群306、308、310、312、314(或处理器组),包括图3a中未显示的类型。

如上所述,多核处理器(例如,应用cpu)可以实现例如big.little的异构处理器架构。big.little技术利用针对智能电话和平板电脑的动态使用模式,并且寻求针对设备中的大多数操作来使用低功率处理器核(例如,在功率集群中)。

big.little架构模型的最新发展包括提供异构多处理(hmp),其允许所有核处于活动状态并且暴露给操作系统。可以将具有高优先级或需要计算强度的任务分配给性能核(performancecore),而具有较低优先级或较少计算强度的线程(例如后台任务)可以由功率核(powercore)执行。

全局任务调度是一种调度模型,其可以用于将任务分配给big.littlesoc上的各种处理核。具体而言,使用全局任务调度的调度器了解在性能核和功率核之间的计算能力容量的差异。使用统计数据和其它探试程序(heuristic),调度器跟踪针对每个单独任务的性能要求,并且使用该信息来决定对每个任务使用哪种类型的处理器核。可以将未使用的核断电,并且如果集群中的所有处理器核都关闭,则可以将集群本身断电。

图3b示出了处理设备(例如应用cpu(“acpu”))的big.littlesoc350的示例。参考图1-图3b,soc350可以包括至少一个性能集群352和至少一个功率集群354。性能集群352可以包括四个处理核356、358、360、362(也被称为“性能核”),以及共享l2高速缓存364。功率集群354可以包括四个处理核366、368、370、372(也被称为“功率核”),以及共享l2高速缓存374。在一些实施例中,全局任务调度模型可以由应用cpu上的内核调度器376实现。

可以通过随性能水平(例如,以每秒百万条指令(mips)为单位)或性能基准(例如,以dhrystonemips(dmips)、coremark等为单位)变化来测量功率使用(mw),来评估多核应用cpu的功率集群和性能集群的功率特性。在给定的性能水平,功率集群的核可以比性能集群的核消耗更少的功率。也就是说,功率集群可以提供比性能集群更好的每mw性能。然而,功率集群还可以具有基于硬件支持的最高时钟速率/频率的最大性能水平。因此,要求高于功率集群的最高水平的性能的任务通常由性能集群执行,这实现了高得多的性能水平但效率更低(即,每mw的性能增益更低)。也就是说,在性能集群上执行任务可以允许在显著增加功率的权衡的情况下的高处理需求任务。

可以在计算设备上运行的各种应用可以具有独特的高处理需求,例如与游戏、视频回放或编辑等有关的那些应用。但是,即使没有这样的应用,涉及与wlan的通信的活动通常也会导致多个应用流在应用cpu上运行。例如,用户可以发送上行链路数据和/或接收下行链路数据以便共享媒体内容、下载或流式传输视频文件等。结果,在视频文件的情况下,可以开始应用流以用于启动网络浏览器、下载管理器,网络播放器或媒体流式传输应用等中的每一者。对于与wlan相关的每个流,应用cpu通常用于执行三个软件任务:即,wlan驱动器、tcp/ip栈(或“ip栈”)和应用。

用于多核应用cpu上的软件任务的现有内核调度器模型可以寻求优化功率使用。然而,当处理与wlan相关的应用流时,从功率角度来看,这样的调度模型可能仍然是有问题的。具体而言,为了实现高吞吐量,与wlan驱动器和应用相比,wlanip栈可以具有相对高的处理要求。因此,尽管内核调度器可能尝试将功率集群用于整个wlan进程,但基于总体cpu负载和软件任务,可能需要在性能集群上调度ip栈。

同样基于总体cpu负载和软件任务,内核可以在相同集群内的单个核或多个核上调度wlan驱动器和ip栈任务。虽然这种灵活性通常有助于减少应用cpu功率使用,但这种帮助只是在顶层。也就是说,用于运行wlanip栈的应用cpu集群的配置和使用主要是基于wlan驱动器软件设计和调度单元(也被称为“wlan子系统”)来确定的。例如,wlan子系统可以提供wlan驱动器如何调度工作项、与ip栈对接,以及在多个应用流上调度ip栈。这样的信息不会暴露给内核或由内核控制,并且因此来自内核调度器的功率优化通常非常有限。

已经为多核应用cpu引入了对wlan子系统调度的一些改进,以便解决工作负载和/或热问题。例如,取决于要实现的特定吞吐量,单个性能集群核运行所需要的频率可能超过最大cpu时钟。因此,可以由内核实现接收分组转向(rps)来分配软件任务,以用于在可用的性能集群核之间处理所接收的网络分组,以便并行工作。通过这种方式,可以将针对不同流的ip栈任务拆分到性能集群的多个核上。与单核相比,这些性能集群核中的每一个性能集群核具有减少的工作负载并且以平均更低的核频率运行。

然而,虽然采用rps可能会通过避免以非常高的时钟速率运行性能核来对功率使用产生轻微影响,但它不由电源问题指示。也就是说,rps功能没有考虑应用cpu核的功率特性。相反,rps主要由并行的处理任务的吞吐量需求来驱动。

已经用于减小在应用cpu的性能核上运行的任务(例如,ip栈软件)的功耗的一种技术是将wlan驱动器固定到作为相同应用流的一部分的ip栈。以这种方式,避免了用于在这两个任务之间进行协调所需的额外处理。但是,为了实现高吞吐量,针对每个应用流的wlan驱动器和ip栈一起被分配给性能集群核。

在各种实施例中,wlan子系统可以实现针对计算设备上的应用cpu功率核定制的功率优化的任务调度过程。具体而言,功率优化的任务调度过程可以被设计用于ip栈和wlan驱动器软件(其最终确定acpu功耗的大部分)。wlan子系统可以基于由核的特定功率简档定义的门限来最终将应用cpu上的功耗最小化。

具体而言,可以为多核应用cpu中的核(例如,功率集群中的核)开发性能曲线(即,功率简档),以用于各个实施例中的调度。具体而言,可以计算各种功率范围和门限,以便开发特定于应用cpu硬件的调度过程。

关于可以包括在异构处理组件中的各个处理器/核的不同性能特性,性能差异可以归因于任何数量的原因,这些原因包括但不限于不同级别的硅,设计变化等。与任何给定处理组件相关联的性能特性可以根据该处理组件的操作温度、向该处理组件提供的功率等而不同。

图4a示出了图400,其示出了应用cpu的示例功率集群核的功率简档。图400中所示的功率简档是代表性性能曲线,其描绘了功率集群核随工作负载的变化来消耗的功率。功率简档可以用于开发用于由wlan子系统进行的调度的算法。

在各个实施例中,工作负载可以例如以dmips表示,根据其可以计算相应的wlan吞吐量。如图形400中所示,第一工作负载门限“w1”与用于操作功率集群核的基线功耗水平相对应。也就是说,将wlan吞吐量减小到低于与w1相对应的值不会导致功耗的任何降低。基线功耗水平可以被称为第一功率门限“p1”。

在工作负载门限w1和第二工作负载门限“w2”之间,代表性功率集群核的性能曲线基本上是线性的。也就是说,每个增量工作负载增加所导致的额外功耗大致恒定。因此,在分别的功率集群核上调度相同的任务将不会实现功率节省,因为由均处于较低核频率的两个这样的核所消耗的功率将与处于总频率的单个功率集群核所消耗的功率大致相同。在工作负载门限w2处的功耗可以被称为第二功率门限“p2”。

然而,在工作负载门限w2上方,代表性功率集群核的性能曲线示出处理效率随着工作负载的增加而降低。也就是说,对于高于w2的每个额外dmips,增加的功耗更大。因此,当所请求的wlan吞吐量与高于工作负载门限w2的工作负载相对应时,存在来自以下操作的功率节省:在多个核之间划分任务,其中每个核以平均较低的操作频率运行。具体而言,工作负载的相应减少提供了成比例更大的功耗降低,并且因此是功率优势。

在各个实施例中,与工作负载门限w1和w2相对应的门限wlan吞吐量值可以用于向wlan子系统提供关于如何针对多个应用流调度ip栈和/或wlan驱动器软件的指令。

实施例被描述为具有性能曲线,其中两个工作负载门限(即,w1和w2)划定功率简档的三个不同区域。然而,这种门限仅作为关于代表性应用cpu的示例提供。如本领域技术人员将理解的:特定应用cpu可以具有以任意数量的功率简档区域为特征的性能曲线,其可以由比两个更多或更少的工作负载门限来定义。

图4b示出了图形450,其示出了对由实现实施例功率优化的任务调度过程的应用cpu的功耗的估计改进。

具体而言,图形450示出了用于反映随骁龙tm835(msm8998)上的吞吐量的变化的功耗的测量。基线数据集452示出了两个应用流正在运行时使用正常任务处理的msm8998的功耗。

第二数据集454示出了在运行两个应用流时实现本文所描述的功率优化任务调度的msm8998的功耗。如图所示,与基线数据集452相比,第二数据集454反映了功耗的显著降低。

图5a和图5b示出了使用在多核应用cpu中配置的处理器核的功率特性来调度wlan软件任务的方法500。根据各种实施例,用于使用处理器核的当前功率特性来动态地调度与wlan软件相关的任务的方法可以在多核应用cpu中实现。这样的系统可以为将处理密集型软件任务并行调度到功率核上提供灵活性。具体而言,关于应用cpu硬件功率特性的预先定义的信息集实现了这种灵活性和分布式处理。

在各种实施例中,wlan子系统可以通过避免在性能集群上调度任务来将在应用cpu上的功耗最小化。例如,如果由于应用cpu上的应用流造成存在高处理需求,则wlan子系统可以将这种流的任务分布在多个核之间,从而降低所需频率并且使得功率集群的核能够执行任务。在一些实施例中,wlan子系统可以为多个应用流中的每一个应用流提供用于ip栈,以及可选地用于wlan驱动器的调度。

参考图1-图5b,方法500的操作可以在计算设备中在处理器(例如,处理器14)中执行的软件中、在通用硬件中、在专用硬件中,或者在处理器和专用硬件的组合(例如包括其它单独组件的执行wlan子系统的处理器)中实现。为了包含在各个实施例中实现的替代配置,实现方法500的硬件在本文中被称为“处理设备”。

在框502中,处理设备可以监测由用户在计算设备上发起的一个或多个应用流。

在框504中,处理设备可以针对框506中所监测的应用流来检测wlan吞吐量要求。在一些实施例中,可以通过基于执行应用来计算吞吐量,来执行检测或确定wlan吞吐量要求。在一些实施例中,可以通过读回应用cpu和/或总线寄存器来执行检测或确定wlan吞吐量要求。

在确定框506中,处理设备可以确定是否识别了用户发起的多个应用流。

响应于确定未识别出用户发起的多个应用流(即,确定框506=“否”),处理设备可以在框508中在尽可能少的功率集群核上调度用于单个应用流的wlan软件任务。例如,如果基于所指派的集群中的处理核的容量和wlan吞吐量要求被允许,则可以在同一个核上一起调度用于单个流的wlan软件任务(例如,wlan驱动器和ip栈)。否则,可能需要至少一个额外核来调度wlan软件任务(例如,wlan驱动器和ip栈),所述wlan软件任务可以被指派给功率集群中的不同核。在框502中,处理设备可以继续监测由用户发起的一个或多个应用流。

响应于确定识别出用户发起的多个应用流(即,确定框506=“是”),处理设备可以在框512中基于应用cpu中的处理器核的功率特性,来确定(例如,计算)第一门限值。在一些实施例中,可以使用计算设备中的多核应用cpu的功率简档来确定或计算第一门限值。例如,可以针对应用cpu的特定核和集群来校准例如图形400(图4)中所示的性能曲线。在识别出第一工作负载门限(例如,w1)的值时,处理设备可以使用性能曲线来识别第一功率门限(例如,p1)。可以通过基于特定应用cpu硬件和wlan软件设计来校准与第一工作负载门限相对应的wlan吞吐量,来确定第一门限值。

在确定框514(图5b)中,处理设备可以确定wlan吞吐量要求是否小于第一门限值。响应于确定wlan吞吐量要求小于第一门限值。

响应于确定wlan吞吐量要求小于第一门限值(即,确定框514=“是”),处理设备可以在框516中在应用cpu的功率集群中的单个处理器核上调度用于多个应用流的所有wlan软件任务(例如,ip栈和wlan驱动器)。

响应于确定wlan吞吐量要求不小于第一门限值(即,确定框514=“否”),处理设备可以在确定框518中确定wlan吞吐量要求是否小于第二工作负载门限值。在一些实施例中,可以使用计算设备中的多核应用cpu的功率简档来计算第二门限,如参考图形400(图4)所描述的。在针对w2识别出值时,处理设备可以鉴于处理器核配置来获得第二门限值作为对应的wlan吞吐量。

响应于确定wlan吞吐量要求小于第二门限(即,确定框518=“是”),在框520中,处理设备可以在功率集群中尽可能少的处理器核上调度用于多个应用流的wlan软件任务(例如,ip栈和wlan驱动器)。在一些实施例中,可以在单个处理器核上调度所有wlan软件任务。在一些实施例中,基于功率集群中的处理核的容量和应用cpu负载,可能需要至少一个额外的核以用于调度wlan软件任务。在一些实施例中,可以一起调度特定应用流的ip栈和wlan驱动器,而在一些实施例中,可以将这些任务指派给不同的核。

响应于确定wlan吞吐量要求不小于第二门限值(即,确定框518=“否”),处理设备可以在框522中通过在功率集群的所有核之间进行分配来调度用于多个应用流的wlan软件任务(例如,ip栈和wlan驱动器)。在框502中,处理设备可以继续监测由用户发起的一个或多个应用流。

各个实施例(包括但不限于上文参考图1-图5b描述的实施例)可以在包括移动计算设备的各种计算系统中实现,图6中示出了适合与各种实施例一起使用的示例。移动计算设备600可以包括耦合到触摸屏控制器604和内部存储器606的处理器602。处理器602可以是被指定用于通用或专用处理任务的一个或多个多核集成电路。内部存储器606可以是易失性或非易失性存储器,并且还可以是安全的和/或加密的存储器、或者不安全的和/或未加密的存储器、或者它们的任意组合。可以利用的存储器类型的示例包括但不限于ddr、lpddr、gddr、wideio、ram、sram、dram、p-ram、r-ram、m-ram、stt-ram和嵌入式dram。触摸屏控制器604和处理器602还可以耦合到触摸屏面板612,例如电阻感测触摸屏、电容感测触摸屏、红外感测触摸屏等。另外,计算设备600的显示器不需要具有触摸屏功能。

移动计算设备600可以具有互相耦合和/或耦合到处理器602的、用于进行发送和接收通信的一个或多个无线信号收发机608(例如,peanut、蓝牙、zigbee、wi-fi,rf无线电单元)和天线610。收发机608和天线610可以与上述电路一起使用,以实现各个无线传输协议栈和接口。移动计算设备600可以包括实现经由蜂窝网络的通信并且耦合到处理器的蜂窝网络无线调制解调器芯片616。

移动计算设备600可以包括耦合到处理器602的外围设备连接接口618。外围设备连接接口618可以单独被配置为接收一种类型的连接,或者可以被配置为接收各种类型的物理和通信连接(公共和专有的),比如通用串行接口(usb)、火线(firewire)、雷电接口(thunderbolt)或pcie。外围设备连接接口618还可以耦合到类似配置的外围设备连接端口(未示出)。

移动计算设备600还可以包括用于提供音频输出的扬声器614。移动计算设备600还可以包括由塑料、金属或材料的组合构造的,用于包含本文中描述的组件中的所有或一些组件的壳体620。移动计算设备600可以包括耦合到处理器602的电源622,比如一次性的或可再充电电池。可再充电电池还可以耦合到外围设备连接端口,以从移动计算设备600外部的源接收充电电流。移动计算设备600可以包括用于接收用户输入的物理按钮624。移动计算设备600还可以包括用于打开或关闭该移动计算设备600的电源按钮626。

各个实施例(包括但不限于上文参考图1-图5b描述的实施例)可以在包括膝上型计算机700的各种计算系统中实现,图7中示出了其示例。许多膝上型计算机包括用作计算机的指向设备的触摸板触摸表面717,并且因此可以接收与在配备有触摸屏显示器和上文描述的计算设备上实现的那些类似的拖动、滚动和轻弹的手势。膝上型计算机700将通常包括耦合到易失性存储器712和大容量非易失性存储器(例如闪速存储器的磁盘驱动器713)的处理器711。另外,计算机700可以具有用于发送和接收电磁辐射的一个或多个天线708,这些天线可以连接到耦合到处理器711的无线数据链路和/或蜂窝电话收发机716。计算机700还可以包括耦合到处理器711的软盘驱动714和压缩盘(cd)驱动器715。在笔记本配置中,计算机壳体包括:全部耦合到处理器711的触摸板717、键盘718和显示器719。计算设备的其它配置可以包括公知的耦合到处理器(例如,经由usb输入)的计算机鼠标或轨迹球,其还可以结合各个实施例使用。

各个实施例(包括但不限于上文参考图1-图10描述的实施例)也可以在固定计算系统(比如各种商业可用服务器中的任意服务器)中实现。图8中示出了示例服务器800。这种服务器800通常包括耦合到易失性存储器802和大容量非易失性存储器(例如磁盘驱动804)的一个或多个多核处理器组件801。如图8所示,可以通过将多核处理器组件801插入到组件的机架中来将其添加到服务器800。服务器800还可以包括耦合到处理器801的软盘驱动914、压缩盘(cd)或数字多功能盘(dvd)盘驱动806。服务器800还可以包括:耦合到多核处理器组件801的网络接入端口803,其用于建立与网络805(例如耦合到其它广播系统计算机和服务器的局域网、互联网、公共交换电话网和/或蜂窝数据网络(例如,cdma、tdma、gsm、pcs、3g、4g、lte或任何其它类型的蜂窝数据网络))的网络接口连接。

用于在可编程处理器上执行以执行各个实施例的操作的计算机程序代码或“程序代码”可以用高级编程语言(比如c、c++、c#、smalltalk、java、javascript、visualbasic、结构化查询语言(例如,transact-sql)、perl)或各种其它编程语言来编写。如本申请中使用的存储在计算机可读存储介质上的程序代码或程序可以指代其格式由处理器可理解的机器语言代码(比如目标代码)。

前述方法描述和过程流程图仅作为说明性示例来提供,并不旨在要求或暗示各个实施例的操作必须以所呈现的顺序来执行。如同本领域技术人员将明白的:前述实施例中的操作的顺序可以以任意顺序执行。诸如“此后”、“随后”、“接下来”等的词语不旨在限制操作的顺序;这些词语仅用于在对方法的描述中引导读者。另外,例如,使用冠词“一(a)”、“一个(an)”或“该(the)”对单数形式的权利要求元素的任何提及不应该被解释为将元素限制为单数。结合各个实施例来描述的各个说明性的逻辑框、模块、电路和算法操作可以实现成电子硬件、计算机软件或它们的组合。为了清楚地表示硬件和软件之间的该可交换性,上文已经对各个说明性的组件、框、模块、电路和操作围绕其功能进行了总体描述。至于这种功能是实现为硬件还是实现为软件,取决于特定的应用和对整个系统所施加的设计约束。本领域技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是这种实现方式决策不应解释为造成对权利要求的范围的背离。

用于实现结合本文所公开的实施例所描述的各种说明性的逻辑、逻辑块、模块和电路的硬件可以使用被设计为执行本文所描述的功能的通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立门或晶体管逻辑器件、分立硬件组件或它们的任意组合来实现或执行。通用处理器可以是微处理器,但是,在替代方案中,处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器与dsp内核的结合、或者任何其它这种配置。替代地,一些操作或方法可以由特定于给定功能的电路来执行。

在一个或多个实施例中,可以用硬件、软件、固件、或者它们的任意组合来实现所描述的功能。如果用软件实现,则可以将功能作为一个或多个指令或代码存储在非临时性计算机可读介质或非临时性处理器可读介质上。本文所公开的方法或算法的操作可以体现在可以位于非临时性计算机可读或处理器可读存储介质上的处理器可执行软件模块中。非临时性计算机可读或处理器可读存储介质可以是可以由计算机或处理器访问的任何存储介质。举例说明而非限制,这样的非临时性计算机可读或处理器可读介质可以包括ram、rom、eeprom、闪存器、cd-rom或其它光盘存储、磁盘存储或其它磁存储设备,或可以用于以指令或数据结构的形式存储期望的程序代码并可以被计算机访问的任何其它介质。如本文中所使用的,磁盘和光盘包括压缩光盘(cd)、激光光盘、光盘、数字通用光盘(dvd)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上文的组合也应当包括在非临时性计算机可读和处理器可读介质的范围之内。此外,方法或算法的操作可以作为代码和/或指令的一个或任意组合或集合位于可以被并入计算机程序产品中的非临时性处理器可读介质和/或计算机可读介质上。

为使本领域任何技术人员能够实现或者使用权利要求,提供了对所公开的实施例的前述描述。对于本领域技术人员来说,对这些实施例的各种修改将是显而易见的,并且,在不脱离权利要求的范围的情况下,可以将本文中定义的总体原理应用于其它实施例和实现方式。因此,本公开内容并不旨在限于本文中描述的实施例和实现方式,而是要符合与所附权利要求书和本文中公开的原理和新颖性特征相一致的最广范围。

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