专利名称:基于自动工作负荷检测的功率管理的制作方法
技术领域:
本文描述的一个或多个实施方式涉及功率管理。
背景技术:
功率管理一直是电子系统设计者的目标。一种方法包括使用中央处理单元(CPU) 来关闭不使用的系统部件。然而,将CPU用于这个目的不是最佳选择,因为CPU会消耗大量的功率。
图1是示出了用于管理电子设备的功率的系统的一个实施方式的图示。图2是示出了用于管理电子设备的功率的方法的一个实施方式执行的预备操作的图示。图3是示出了可以基于图2中的预备操作执行的功率管理方法的一个实施方式中包含的操作的图示。图4是示出了一类神经网络的示例的图示,该神经网络可用于根据本文描述的一个或多个实施方式来管理功率。图5是示出了用于训练管理电子设备的功率的神经网络的方法的实施方式中包含的操作的图示。图6是示出了用于在电子设备运行期间管理功率的方法的另一实施方式中包含的操作的图示。图7是示出了可以构成神经网络的基础的感知器的示例的图示,其中,该神经网络可以用于实现一个或多个实施方式。图8是示出了结合神经网络而标绘的值的图形,可以根据一个或多个实施方式来训练和实现该神经网络。图9是示出了多层感知器的示例的图示。图10是示出了 XOR网络的输出的图形。图11是示出了与Sigmoid函数相关联的值的图形。
具体实施例方式根据本发明的一个或多个实施方式,在不使用电子设备的主处理器的情况下和/ 或在主处理器处于空闲状态期间执行功率管理。电子设备可以是多个电池供电设备中的任意一个,诸如但不限于移动电话、个人数字助理、媒体播放器或膝上型或笔记本计算机。可替换地,电子设备可以是通常在固定位置使用的AC供电的设备,诸如台式计算机、电视机、 DVD或其他类型的媒体播放器、环绕音响或其他媒体接收器,这只是几个示例。图1示出了被进行功率管理的电子设备的内部架构的示例。该架构包括操作系统内核(Kernel)I,其执行用于控制核心(core)和子系统硬件部件2的指令(代码)。
更具体地,该内核是用作操作系统的中央核心的程序,并在设备加电时被引导。该内核控制硬件部件,有时在不使用主处理器的情况下直接控制。该内核本身并不直接与用户进行交互,而是与命令解释程序(shell)和其他程序以及包括主处理器(例如,中央处理单元)、存储器、驱动器等的硬件部件进行交互。例如,该内核可以控制用于操作系统的各种部分的基本服务,包括存储器管理、进程管理、文件管理以及1/0(输入/输出)管理(S卩,访问外围设备)。这些服务由操作系统的其他部分或者由应用程序通过称为系统调用的指定的程序接口集来请求。由于内核代码22的关键性,其通常被加载到存储器的受保护区域中,这避免内核代码22被操作系统的其他很少使用的部分或被应用程序所重写。该内核执行与用户控制进程或在用户空间中执行的应用程序的运行不同的任务,诸如在内核空间中执行进程和处理中断。进行这种分离是为了避免用户数据和内核数据彼此干扰,从而避免降低性能或使系统变得不稳定(并且有可能崩溃)。内核的结构和代码可以根据操作系统和/或在其中实现操作系统的电子设备而变化。通过示例的方式,内核可以包括调度器、监视器、中断处理机(handler)以及存储器管理器。调度器可以确定各种进程如何共享内核的处理时间,包括以什么样的顺序进行共享。监视器可以控制在每个进程被调度时其对主处理器的使用。中断处理机可以处理来自竞争内核服务的各种硬件子系统的请求。而且,存储器管理器可以为各种应用分配存储器中的地址空间。根据一个实施方式,内核可以是Linux内核。然而,根据本文描述的实施方式,可以使用任意其他的内核,包括但不限于Windows型内核或基于Unix的内核。受内核控制的核心部件可以包括主处理器3、存储器4、芯片组5、基本输入/输出系统(BIOS) 6和功率管理系统7,其中功率管理系统7可以耦合到电池8和AC电源电路9。 子系统可以包括例如安全数字(SD)存储卡10、照相机11、显示器12、通用串行总线(USB) 电路13、Wi-Fi和/或蓝牙电路14、麦克风和扬声器电路15、发射器16、媒体播放器17和键盘18。当然,依赖于例如电子设备的类型,可以包括子系统部件的不同排列或组合。预备操作图2示出了可以在功率管理方法的一个实施方式中执行的预备操作,例如,其可以在图1所示的电子设备中实现。出于说明的目的,假设电子设备是电池供电的设备,诸如移动电话。该方法的第一操作包括生成需要功率控制的硬件部件的列表(框210)。在一些移动平台中,这些设备可以被称为功率岛。硬件部件可以包括核心和/或子系统部件的任意排列,包括但不限于之前描述的那些排列。第二操作包括生成可以在电子设备中执行或由电子设备执行的功能的列表(框 220)。这些功能(例如其可以被称为“用例(use case)”)可以基于电子设备中的硬件子系统部件的类型。第三操作包括将每个功能映射到硬件部件(框230)。例如,如果电子设备是具有媒体播放器的移动电话,则该电话的音频回放功能可以被映射到该电话的音频硬件(例如,扬声器)和SD输入/输出(SDIO)电路。在该设备是移动电话的情况下可以生成的示例性的功能列表如下面的表1所示。功能(用例)音频SDIO WiFi Gfx
来自SD卡的音频回放110 0因特网上的视频流1Oil
显示来自SD卡的照片O10 1
来自SD卡的视频回放 1101表 1在表1中,符号Gfx指代用于在显示器上生成可视图像的硬件子系统。此外,符号 “1”表示需要使用硬件子系统来执行相应的一个功能,而符号“O”表示不需要使用相应的硬 件子系统来执行那个功能。第四操作包括识别电子设备的核心设备驱动器,并然后提取与那些驱动器相对应 的符号(框Mo)。多个软件工具中的任意一个都可以用于执行该操作。例如,对于Linux 内核而言,可以使用“objdump”命令(即,用于从对象文件读取信息并显示与对象文件相关 的信息的程序或程序指令)来识别和提取设备驱动器和符号。在其他实施方式中,可以使 用不同的工具或实用程序(utility)。第五操作包括收集与在第三操作中生成的锋个映射的功能相对应(“命中”)的内 核符号(框250)。前述操作中的所有信息都可以存储在电子设备的内部存储器中,以由内核在管理 功率时使用。此外,该信息可以用作执行功率管理的基础,而不必涉及该系统的主处理器 (例如,CPU),该主处理器是消耗最多功率的其中一个硬件部件。而且,由于不需要使用主 处理器,所以可以例如在主处理器处于空闲或待机模式时以及诸如在主处理器被活动地用 于处理调用或用于执行与某个子系统操作不相关的功能的其他时刻来管理功率。在后一情 况中,主处理器的工作负荷没有因功率管理操作而增加。一旦已经获取和存储了从前述操作中导出的所有信息,就可以在逐个功能的基础 上执行本发明方法的功率管理阶段。也就是说,对于锋个映射的功能而言,可以确定不被使 用的硬件子系统的列表。例如,在表1中,来自SD卡的音频回放功能并不涉及WiFi和图像 (Gfx)硬件子系统。而且,来自SD卡的照片显示功能并不涉及WiFi和音频硬件子系统。这 样,当执行锋个功能吋,就可以执行一个或多个功率管理操作来降低或关闭给不使用的子 系统的功率,所有这些都不必涉及主处理器。根据一个实施方式,基于内核的操作,更具体的是基于内核执行的指令(代码), 来执行功率管理操作,以便执行电子设备中的功能。这可以通过控制图1中所示的功率管 理系统7以管理(例如,降低或关闭)给未使用的硬件子系统的功率来实现,从而绕过主处 理器。由于没有正在使用主处理器,所以可以实现大量的功率节省。功率管理图3示出了一种可以控制功率管理系统以管理硬件子系统的功率的方法。根据该 方法,功率管理系统可以由神经网络80来控制,该神经网络80至少从功能性角度而言稱合 在图1所示的操作系统内核和功率管理系统之间。在初始框310中,训练神经网络以辨认由内核执行的操作。可以基于图2的方法 中的预备操作获得的信息来执行该训练。该信息可以以之前讨论的查找表或映射表的形式进行存储,以状态图或者以神经网络可以访问的任意其它形式进行存储。根据该实施方式,神经网络被训练,以基于为每个映射的功能收集的内核符号来辨认由内核执行的操作。基于内核必须执行的指令来收集内核符号,以执行映射的功能。内核符号与被执行代码的可辨认模式相对应,该被执行代码允许神经网络识别正在被执行的功能。更具体地,由内核执行的每个功能都要求执行特定的指令集。例如,当需要从USB 存储器向电子设备的内部存储器中拷贝文件时,必须由内核执行某个指令集。被执行的指令和/或由这些指令生成的结果(例如,命中符号)定义了可以由神经网络辨认以识别相应功能的模式。在对神经网络进行训练之后,该神经网络用于监视运行时内核的操作(框320)。 在监视期间,如之前提到的那样辨认从内核导出的符号模式(框330)。根据一个实施方式,基于探测器的使用来实时辨认符号模式。对于Linux内核而言,可以使用内核探测器 (kprobe)来定义要在监视内核操作时使用的符号,其中内核操作被执行以实现电子设备的功能。Kprobe是用于Linux内核的调试机制,其还能够用于监视在该设备中执行的功能。更具体地,kprobe指代放置在某个指令地址上的一组处理机(handler),并由预处理机和后处理机进行定义。当kprobe被安装在特定的指令处并且那个指令由内核执行时,仅在执行kprobe指令之前执行预处理机。类似地,仅在执行kprobe指令之后执行后处理机。 通过该过程,神经网络能够辨认与内核的具体操作相对应的模式,该具体操作继而与电子设备要执行的具体功能相对应。更具体地,在执行它的监视功能时,神经网络收集为在电子设备中执行的相应功能而生成的内核符号的模式。例如可以以预定间隔来收集这些模式,并然后将这些模式与存储在存储器中的映射表相比较(框340)。在执行比较时,将从内核输出的命中符号与所述表中的符号模式进行比较。当在该表中存在符号模式的匹配时,神经网络能够识别正在由电子设备执行的相应功能(框350)。一旦已经识别了该功能,神经网络就能够根据该表确定不需要使用哪些硬件子系统来执行那个功能(框360)。然后,神经网络可以向功率管理系统发送控制信号,以至少在所述功能期间(所有这些都不必涉及使用主处理器)和/或在主处理器处于空闲、待机、休眠或其它低功率状态的时刻期间降低或关闭给一个或多个未使用硬件子系统的功率(框 370)。作为示例,考虑在针对存储在SD卡上的歌曲文件执行音频回放功能的情况。根据本发明的方法,神经网络可以基于内核执行的指令(命中符号)模式来辨认该功能的执行。 然后,神经网络可以生成促使功率管理系统降低或关闭给WiFi和Gfx(图像)子系统的功率的命令,因为这些子系统不需要用于那个功能。本发明的方法还可以包括多个另外的操作。例如,神经网络的训练可以考虑多个功能的同时执行。例如,考虑在正在从因特网流式传送用于显示的视频的同时用户对设备进行操作以显示来自SD卡的照片的情况。在该情况中,神经网络将根据相关联的内核模式来辨认正在被同时执行的功能,并且将不关闭给音频、SDI0、WiFi或Gfx子系统的功率。然而,神经网络可以向功率管理系统发送命令,以降低或关闭给没有被用来支持这些功能的硬件子系统的功率。而且,可以通过生成和/或存储用于每个功能(或用例)的权重并然后将这些权重用于控制给硬件子系统的功率,来训练神经网络。图4示出了可以用于实现本文描述的一个或多个实施方式的神经网络的示例。如图所示,该神经网络是多层感知器,其可以例如通过使用将Sigmoid用作转换函数的反向传播算法而得到训练。虽然已经描述了 kprobe在允许神经网络辨认来自Linux内核的命中符号中的应用,但是可以使用其它类型的探测或通知机制来向神经网络告知命中符号,尤其是在使用 Windows或其它内核时。图5示出了用于对管理电子设备的功率的神经网络进行训练的方法的另一实施方式中包括的操作。该方法的第一操作包括从功率可管理设备的设备驱动器中收集内核符号(框510)。每个设备驱动器可以与多个硬件核心或子系统部件中的各自的一个相对应。 一旦被收集,这些符号就可以存储在内部存储器中以便将来使用(框520)。接下来的操作包括对独立的功能(例如,用例)以及需要执行每个功能的硬件部件进行识别(框530)。对于每个被识别的功能而言,运行内核分析器(profiler)来收集与需要执行每个功能的硬件部件相对应的符号(例如,命中符号)(框M0)。基于在框520中存储在存储器中的符号来执行该操作。然后基于所述符号和功能来生成映射表(框550)。接下来的操作包括针对映射表中列出的每个功能,识别未被使用的硬件部件的符号(例如,未命中的符号)。然后,从映射表中移除被识别的未使用的符号(框560),以生成最终的符号集以及它们相关联的功能(框570)。换言之,编辑映射表以便每个功能仅与它的命中符号相关联。结果,产生了可以被认为是最佳的符号集。然后,训练神经网络,以基于来自内核的符号模式与映射表中的命中符号的比较来辨认内核的操作(框580)。可以使用多种公知技术中的任意一种来训练神经网络,包括但不限于前述的反向传播算法。训练过程的输出(其可以包括用于该网络中的每个神经元的权重)出现在框590中。(如何生成并分配权重的示例将在下文进行详细描述)。然后, 可以使用这些权重如之前所指示的那样执行功率管理。图6是示出了用于在电子设备运行期间管理功率的方法的另一实施方式中包括的操作的图示。可以例如基于在图5中生成的映射表以及本文描述的其它实施方式来执行该方法。初始操作包括开始电子设备的运行时间(框610)。然后过程流可以沿着两个路径中的一个进行。第一路径是用于实现功率管理控制的挂起(suspend)路径。在该挂起路径期间,通过用于Linux内核的kpr0be_pr0file接口来馈送仿形(profiling)需要的符号列表(框620)。通过使用为电子设备中的每个功能(用例)生成的映射(仿形符号)表来执行该操作(框630)。然后在内核执行各种操作以支持该设备的功能时,以周期性的间隔收集命中符号 (框640)。可以例如使用添加到内核中的kprobe_hit接口来执行该操作。在收集了命中符号之后,运行神经网络以将符号模式转换成电子设备的对应功能 (或操作状态)(框650)。可以基于之前提到的权重(如从框660导出的)来执行该操作。这些权重可以存储在内部存储器中并根据制造商和/或用户喜好来进行设置。一旦确定了该设备的功能或操作状态,就可以确定是否降低或关闭给一个或多个硬件部件的功率(框660)。可以基于例如不具有相应命中符号的硬件部件,由神经网络来做出该确定。如果框660中的确定是肯定的,则神经网络向功率管理系统输出控制信号,以降低或关闭给不需要针对这些功能或状态进行操作的一个或多个硬件部件(例如,在该时刻不具有命中符号的硬件部件)的功率(框670)。这可以涉及经由kprobejotify接口来馈送符号列表,在符号命中时可以针对该列表来发送通知。控制信号可以是给内核的命令的形式,以用于设备/平台状态功率转换,即转换到更低功率状态或关闭功率状态(框680)。如果框660中的确定是否定的,则过程流可以进行到用于控制(例如,开启)给与命中符号相对应的硬件部件的功率的框680。然后,过程流可以进行到运行时间循环框 690,并返回开始运行时间。恢复路径包括例如在给硬件部件的功率已经被关闭或者置于低功率状态时执行的不同的操作集。当要恢复给该硬件部件的功率时,从内核中获得通知,表明存在与硬件部件相关的命中符号。该通知向神经网络提供要开启给硬件部件的功率(例如,要开启到预定水平)的通知,因为内核当前正在执行与必须使用该硬件部件执行的设备功能相对应的指令(框700)。然后神经网络生成用于促使功率管理系统为那个部件供电的信号(框 710)。否则,控制返回所述运行时间循环。神经网络如之前所指示的那样,多层感知器形式的神经网络可以用于实现本文描述的一个或多个实施方式。感知器是可以被认为是分类器的一类神经网络,在该感知器中,它能够在数据组之间进行区分,更为重要的是,它能够将之前未看见的数据实例分类到多个被学习的组中的一个中。单个感知器的结构可以包括多个输入00、权重00、偏置(b)和一个输出。图7示出了感知器的示例。如图所示,对于感知器上的每个输入(包括偏置)而言,存在着对应的权重,例如W(l,W1,. . . Wn。为了计算感知器的输出,将每个输入乘以它对应的权重。然后,通过确定感知器的最终输出的限制器函数来馈送加权和。例如,用于简单感知器的限制器函数可以是阶梯式限制器。也就是说,通过将所有的输入与它们的权重相乘后进行求和并加上偏置来计算感知器,然后通过限制器来运行加权和。使用数学术语,这些可以定义为限制器的输出与感知器的输出相对应。例如,如果加权和是_2,则感知器可以返回0。或者,如果该和为3,则感知器可以返回1。如果感知器返回1,则可以认为该感知器已经“激发(fire)” 了。可以教导这种类型的感知器以将呈现给它的数据组进行分类。可以对该感知器进行训练,以通过修改一个或多个权重来对数据组进行分类。可以将所谓的Delta规则用于这个目的。根据该规则,可以基于期望输出与实际输出之间的差异来调整权重,或者使用数学术语表示为
Awi = Xi δ其中δ =(期望输出)-(实际输出)在该训练期间可以使用感知器收敛理论。根据该理论,如果能够在感知器上实现求解(solution),则学习规则将在有限数目的操作中找到该求解。感知器仅能够在两个种类能够由直线(或者,更为一般地,如果存在不止两个输入时为超平面)进行划分时才对数据进行分类。这称为线性分离。为了进一步解释线性分离的概念,考虑下面的函数。
权利要求
1.一种电子设备,包括内核;功率管理器,用于控制给硬件部件的功率;以及神经网络,用于监视所述内核以辨认所述电子设备的功能的执行,所述神经网络用于基于在监视所述内核期间生成的信息来向所述功率管理器发送信号以降低或关闭给所述硬件部件的功率。
2.根据权利要求1所述的电子设备,其中,不需要所述硬件部件来执行所述电子设备的所述功能。
3.根据权利要求1所述的电子设备,其中,所述功率管理器用于在不使用所述电子设备的主处理器的情况下降低或关闭给所述硬件部件的功率。
4.根据权利要求1所述的电子设备,其中,所述功率管理器用于在主处理器处于低功率状态的期间降低或关闭给所述硬件部件的功率。
5.根据权利要求1所述的电子设备,其中,所述神经网络用于基于从所述内核生成的符号来辨认所述电子设备的所述功能的执行。
6.根据权利要求5所述的电子设备,其中,基于在所述功能的执行期间要由所述内核执行的指令中所设置的探测器,来从所述内核生成所述符号。
7.根据权利要求5所述的电子设备,其中,所述神经网络用于通过将所述符号与映射表进行比较来辨认所述电子设备的所述功能的执行,所述映射表用于针对多个预定功能中的每一个来识别所述电子设备的硬件部件的符号的模式。
8.根据权利要求1所述的电子设备,其中,所述内核是Linux内核。
9.根据权利要求1所述的电子设备,其中,所述电子设备是电池供电的通信设备。
10.一种功率管理方法,包括辨认从内核生成的符号模式;基于所述符号模式来识别电子设备的功能;以及基于所识别的功能来降低或关闭给所述电子设备的硬件部件的功率,其中,在执行所识别的功能时不需要使用所述硬件部件。
11.根据权利要求10所述的方法,其中,在不使用所述电子设备的主处理器的情况下降低或关闭给所述硬件部件的功率。
12.根据权利要求10所述的方法,其中,在所述电子设备的主处理器处于低功率状态的期间降低或关闭给所述硬件部件的功率。
13.根据权利要求10所述的方法,其中,所述辨认包括生成将符号模式映射到所述电子设备的多个功能中的各个功能的映射表;以及将从所述内核生成的符号模式与所述映射表中的符号模式进行比较,其中,基于根据所述比较生成的匹配来识别所述电子设备的所述功能。
14.根据权利要求13所述的方法,其中,所述辨认由神经网络执行,并且其中,基于所述映射表来训练所述神经网络。
15.根据权利要求14所述的方法,其中,所述神经网络基于由所述比较生成的匹配来生成用于降低或关闭给所述硬件部件的功率的控制信号,其中,所述控制信号用于控制与所述电子设备的主处理器分离的功率管理系统的操作。
16.根据权利要求10所述的方法,其中,基于包括在由所述内核执行的指令集中的探测器来生成所述符号模式。
17.根据权利要求10所述的方法,其中,所述内核是Linux内核。
18.一种用于存储计算机程序的计算机可读介质,包括第一代码段,用于辨认从内核生成的符号模式;第二代码段,用于基于所述符号模式来识别电子设备的功能;以及第三代码段,用于基于所识别的功能来降低或关闭给所述电子设备的硬件部件的功率,其中,在执行所识别的功能时不需要使用所述硬件部件。
19.根据权利要求18所述的计算机可读介质,其中,所述第三代码段用于在不使用所述电子设备的主处理器的情况下降低或关闭给所述硬件部件的功率。
20.根据权利要求18所述的计算机可读介质,其中,所述第三代码段用于在所述电子设备的主处理器处于低功率状态的期间降低或关闭给所述硬件部件的功率。
21.根据权利要求18所述的计算机可读介质,其中,所述第一代码段用于通过以下步骤辨认所述符号模式生成将符号模式映射到所述电子设备的多个功能中的各个功能的映射表;以及将从所述内核生成的符号模式与所述映射表中的符号模式进行比较,其中,基于根据所述比较生成的匹配来识别所述电子设备的所述功能。
22.根据权利要求21所述的计算机可读介质,其中,所述第一代码段由基于所述映射表而被训练的神经网络来实现。
23.根据权利要求22所述的计算机可读介质,还包括第四代码段,用于基于由所述比较生成的匹配来生成用于降低或关闭给所述硬件部件的功率的控制信号,其中,所述控制信号用于控制与所述电子设备的主处理器分离的功率管理系统的操作。
24.根据权利要求18所述的计算机可读介质,其中,基于包括在由所述内核执行的指令集中的探测器来生成所述符号模式。
全文摘要
基于自动工作负荷检测的功率管理。电子设备包括内核、用于控制给硬件部件的功率的功率管理器、以及用于监视所述内核以辨认所述电子设备的功能的执行的神经网络。该神经网络基于在监视所述内核期间生成的信息来向功率管理器发送信号以降低或关闭给硬件部件的功率。该信息可以基于由内核执行的一个或多个操作,来提供要被供电的硬件部件和/或不需要供电的硬件部件的命中符号的指示。
文档编号G06F1/32GK102207768SQ20111007610
公开日2011年10月5日 申请日期2011年3月29日 优先权日2010年3月29日
发明者A·R·克里希纳, S·托马斯 申请人:英特尔公司