以低开销获得功率分布图信息的制作方法

文档序号:6484598阅读:281来源:国知局
以低开销获得功率分布图信息的制作方法
【专利摘要】在一个实施例中,一种方法包括:在针对多核处理器的核心发生多个功率状态转换事件时,读取该核心的系统计数器值和该核心的低功率计数器值,而无需定时器到期或者中断的触发。可以将这些值存储在处理器的存储器中。随后,在完成收集之后,可以访问该存储器,以便使用所存储的值来确定该处理器的功率分布图。还描述和要求保护了其它实施例。
【专利说明】以低开销获得功率分布图信息
【背景技术】
[0001]现代计算机系统包括耦接在一起的许多不同组件,用以执行数据处理、存取信息和多种其它类似的任务。但是,即使当操作时,也可能不需要很多组件或者其一部分来执行有用的工作。通常,可以将这些组件设置成低功率状态,以减少功耗。这些组件(其还称为设备)可以是特定的芯片、处理器、或者消耗功率的任何其它硬件实体。此外,诸如处理器或片上系统(SoC)之类的单一芯片可以可控制地将其组件中的一个或多个设置成低功率状态。
[0002]为了帮助分析功耗,可以确定功率分布图(power profile),功率分布图是设备的功率状态的时间轴。在很多系统中,为了确定设备的功率状态,处理器必须处于非低功率状态,以便执行指令或其它操作来获得功率分布图信息。也就是说,在进行分布图描绘的系统上执行的分布图描绘(profiling)应用通过调度事件(例如,中断或定时器)进行操作。当该事件发生时,操作系统调用该应用来收集描述其正在进行分布图描绘的行为所必需的信息。但是,通过强制处理器处于完全的供电状态来获得该信息,会使减少功耗的目的受挫。也就是说,这种关于一个平台的功率信息的定期收集,造成使用另外的功率,而且其还使该平台的功率行为失真。
【专利附图】

【附图说明】
[0003]图1示出了根据本发明实施例的时序。
[0004]图2是根据本发明实施例用于执行功率分布图描绘的整体方法的流程图。
[0005]图3是根据本发明一个实施例的收集方法的流程图。
[0006]图4是根据本发明实施例用于终止数据收集的方法的流程图。
[0007]图5是根据本发明实施例用于处理所收集的数据的方法的流程图。
[0008]图6是根据本发明实施例的处理器的框图。
[0009]图7是根据本发明实施例的系统的框图。
【具体实施方式】
[0010]在各个实施例中,可以在无需使处理器或其它设备不必要地退出低功率状态的情况下,执行功率分布图描绘。用此方式,可以使用减少的功耗来确定功率分布图描绘信息(例如,通过不使用处于低功率或者睡眠状态下的处理器来收集功率分布图信息)。因此,实施例提供了一种方法,所述方法在无需使处理器退出低功率或睡眠状态的情况下,在一个平台上实现功率分布图描绘,同时允许用户非常准确地对该平台进行分布图描绘。在很多实施例中,可以对用于跟踪功率状态转换的事件和硬件电力仪表功能进行组合,以使功率分布图描绘应用能非常准确地对平台的功率使用进行分布图描绘。虽然本申请关于处理器描述了示例性实施例,但应当理解的是,本发明的范围并不限于此,并且功率分布图描绘也可以应用于诸如片上系统(SoC)等等之类的系统的其它组件。具体而言,SoC可以包括系统控制单元(S⑶),系统控制单元是始终开启并管理整个SoC的功率的小型处理器。一些实施例可以执行来自于该处理器的功率分布图描绘器,并能够对平台的任何组件进行监测。
[0011]处理器功率状态转换事件跟踪处理器何时改变其当前功率状态。这样的功率状态转换事件包括:活动到睡眠转换和睡眠到活动转换。应当注意,如本申请所使用的,术语“睡眠状态”和“低功率状态”可以互换地使用,以指代设备的与正常操作状态相比更低的功率状态。在这样的低功率状态下,例如参照处理器,一些组件可以保持加电并进行工作,而其它组件则处于断电状态。当处理器进入低功率状态时,实现省电。处理器可以被安排为进入低功率状态,或者当处理器检测到执行的工作负载不需要其支持时,自主地进入低功率状态。也就是说,在一些实施例中,可以由软件(例如,操作系统(OS))或者硬件(例如,处理器自身)来触发这些事件。在各个实施例中,在发生转换事件之后,可以通知分布图描绘应用或者其它分布图描绘器。
[0012]在Linux?操作系统中存在处理器功率状态转换事件的一个示例,即power_start跟踪点(其还称为C状态进入跟踪点)。当操作系统准备将处理器安排为进入睡眠状态时,执行C状态进入跟踪点。这些跟踪点是内核测量机制,可以将它们放置在内核源代码流中的一些点处,以使开发者能更好地理解该内核的功能。换言之,跟踪点就像内核源代码中的printf函数调用。
[0013]跟踪点提供允许设备驱动程序动态地连接到该跟踪点的功能。当一个设备驱动程序连接到一个跟踪点(例如,向跟踪点注册)时,在执行包括该跟踪点的内核源代码时,操作系统调用该设备驱动程序中的函数。换言之,当处理器准备进入睡眠状态时,可以使用C状态进入跟踪点来通知功率分布图描绘应用。应当注意,虽然参照LinuxTM0S的实现进行了描述,但应当理解的是,本发明的范围并不限于此,并且实施例也可以用于其它OS。也就是说,更一般地,实施例提供了在功率状态转换时某些功率状态信息的收集,例如,如OS所实现的。
[0014]当处理器进入某些低功率状态时,其通常停止工作。换言之,其不再执行指令。当处理器被安排进入低功率状态时,其可以选择偏离所请求的睡眠状态。换言之,操作系统可以安排硬件进入睡眠状态1,而该硬件可以基于其对于当前平台活动的了解而选择进入睡眠状态2。代表性处理器包括那些基于Intel?指令集体系结构(ISA)的处理器,其可以例如根据高级配置和电源接口(ACPI)标准(例如,(2006年10月10日公布的)版本3.0b),提供多种低功率状态,其中ACPI标准提供关于处理器核心的多种低功率状态或所谓的C状态。
[0015]在一些实施例中,处理器可以提供关于功率分布图描绘信息的硬件支持。例如,在多核处理器中,每一个核心可以包括低功率状态驻留期计数器(例如,C状态驻留期计数器)。这些低功率状态驻留期计数器是当硬件处于特定的低功率状态时对(例如,处理器周期)进行计数的单调增加计数器。例如,处理器可以提供仅仅用于某些指定的低功率状态(例如,C状态C3和C6)的C状态驻留期计数器。该硬件监测仪器允许对硬件的低功率行为进行准确地监测。此外,硬件可以提供系统时间计数器。例如,处理器可以针对每一个核心提供一个时间戳计数器(TSC)。在一些实施例中,这些计数器是一直(当该硬件活动时,或者处于低功率状态时)进行计数的单调增加计数器。
[0016]如上所述,传统的分布图描绘应用对事件(例如,中断或定时器)进行调度,使得分布图描绘应用可以收集某些信息。但是,这恰恰是功率功率分布图描绘软件可能使处于睡眠状态的处理器退出其睡眠状态的行为。当处理器退出睡眠状态时,其继续以其正常的功耗模式进行操作。换言之,与没有执行应用分布图描绘器的平台相比,对事件进行调度的传统分布图描绘应用使平台消耗了另外的功率(并且可能使低功率性能信息失真)。由于实施例使用处理器功率状态转换事件作为收集关于平台的功率信息的触发事件,因此避免了定时器或中断,并且实施例仅当该处理器活动地执行时,才获得数据。用此方式,分布图描绘应用使用于对平台进行分布图描绘的功率最小化,并避免了该平台低功率行为的失真。
[0017]在一个实施例中,可以使用设备驱动程序来收集功率分布图信息;但是,在其它实施例中,其它特权级别的软件或者甚至用户级别的软件也可以获得该信息。当处理器准备进入低功率状态时,设备驱动程序使用处理器功率状态转换事件而被通知。在该实现中,设备驱动程序使OS的功率状态转换代码来注册一个函数(例如,收集函数)。例如,在一个实施例中,该代码可以是LinuxTMC状态进入跟踪点,并且该注册使得C状态进入跟踪点在每一次操作系统决定将处理器设置为睡眠状态时调用所注册的函数。
[0018]在一个实施例中,当OS执行其C状态进入跟踪点时,设备驱动程序收集函数读取系统时钟和该处理器的睡眠状态驻留期计数器,并所访问的信息被保存。例如,在第一 C状态进入跟踪点处可以发生第一收集以获得采样A。在C状态进入跟踪点下一次执行时,设备驱动程序的函数收集采样B的相同信息。在数据的收集期间,持续这种操作。由于在单一C状态进入跟踪点期间,只读取少数的寄存器,因此性能耗费是最小的。
[0019]图1示出了根据本发明实施例的时序。在t0,C状态进入跟踪点执行,并且收集采样A。随后,处理器进入睡眠状态。应当注意,所进入的睡眠状态可以不同于操作系统所安排的状态。在tl,发生了使硬件退出其睡眠状态并返回到正常的操作和功耗的事件。造成退出睡眠状态的事件(例如,中断或者定时器到期)不是由功率分布图描绘器调度的。在t2,C状态进入跟踪点再次执行,并且收集采样B。应当注意,数据收集不是由跟踪点触发的,而是响应于OS或平台逻辑的另一个通知机制而发生的。
[0020]在收集完成之后,所收集的数据可以由例如分布图描绘应用进行处理。计算采样B的系统时钟值和采样A的系统时钟值之间的差,其可以对应于两个功率状态转换事件之间的实际时间。此外,还可以计算用于采样A的驻留期计数和用于采样B的驻留期计数之间的差,以便针对第一功率状态转换事件,确定低功率状态(以及长度或持续时间,在各个实施例中,可以用周期或者时间来测量)。
[0021]例如,假定存在两个驻留期计数器,一个用于状态C3,一个用于状态C6。此外,假定在采样A和B处,收集到下面的值,如表I中所示。
[0022]表I
[0023]
[1#A fl#B系统时钟 7,100,000 7,100,500~
C31,500,100 1,500,100~
C63,200,000 3,200,300~
[0024]对于这些数据,功率分布图描绘器可以准确地确定进入了哪个睡眠状态(在该情况下,进入C6,这是由于C3计数器没有改变),花费了多长时间在睡眠状态下操作(在C6下度过300个计数),以及花费了多长时间在正常功率电平操作(200个计数,总时间减去睡眠时间)。
[0025]如上所述,实施例可以并入到多种系统之中,并使用不同的组件。在一些实施例中,可以将方法实现成性能分析工具集的一部分。更具体地,实施例可以并入到这样的工具的功率分布图描绘器中,所述工具可以获得关于系统的组件中的功率状态转换的信息,并对该数据进行处理。随后,该数据可以使得诸如用户、编译器、操作系统或其它这种实体之类的给定实体能够进行分析。本申请描述的实施例是关于在诸如多核处理器之类的处理器中发生的功率转换的。但是,虽然使用该特定的实现进行了描述,但应当理解的是,本发明的范围并不限于此,并且在其它实施例中,系统的其它组件(例如,芯片集、存储器、外围设备等等)也可以从根据本发明实施例的功率监测中获益。
[0026]现参见图2,示出的是根据本发明实施例用于执行功率分布图描绘的整体方法的流程图。如图2中所示,方法10可以在性能分析器(并且更具体地,在该分析器的功率分布图描绘器)中实现,方法10可以开始于对功率分布图描绘器的设备驱动程序进行初始化(方框20)。设备驱动程序的这种初始化可以实现与该设备驱动程序相关联的低水平功能,例如,访问特权资源(例如,各种处理器寄存器)的能力。接着,控制权传递到方框30,其中在方框30,例如,可以注册该驱动程序的收集函数,以便在功率状态转换事件期间进行调用。举例而言,可以对处理功率状态转换事件的OS模块进行更新,以便注册该收集函数。在针对LinuX?0S的一个特定实施例中,可以使用跟踪点来注册该收集函数,其中该跟踪点处理关于功率转换的仪器工具。
[0027]仍然参见图2,接着,分配用于存储功率状态转换信息的缓冲区,其中该功率状态转换信息是将在所述收集函数期间获得的(方框40)。举例而言,可以在处理器的高速缓存存储器(例如,末级高速缓存)中设置该缓冲区。因此,此时,功率分布图描绘器被配置为执行收集操作,以便在发生功率状态转换事件时获得功率状态转换信息。
[0028]因此,控制权传递到方框50,其中在方框50,可以针对功率状态转换事件执行收集,并且可以将获得的相应信息存储在缓冲区中。在各个实施例中,可以在与进入低功率模式相对应的功率状态转换事件时,执行该收集。之所以如此,是由于OS执行各种操作,以便准备并使得处理器能够进入低功率模式。但是,在其它实施例中,可以替代地在从低功率模式退出时,获得该信息。在任一事件中,应当注意,可以在分布图描绘窗期间在每一个功率状态转换事件(其具有特定的方向,即,进入或者离开低功率模式)时,而不是在传统功率分布图描绘器的系统操作的随机时间(例如,根据中断或者定时器),对信息进行确定性地收集。这种收集可以针对(某个方向的)多个连续的功率状态转换事件发生与分布图描绘窗相对应的一个时间段,其中在各个实施例中,所述分布图描绘窗可以在很大范围上进行变化,例如,收集可以如一秒一样短,但通常运行得如驱动系统的工作负荷一样长(其通常是数分钟,但在一些罕见情形下,其可以是数小时)。
[0029]因此,可以在收集窗期间,对来自于多个连续的功率状态转换事件的信息进行收集。虽然本发明的范围并不限于此,但在各个实施例中,关于该转换事件所收集的信息可以包括各个计数器(其包括诸如时间戳计数器之类的系统级计数器)的值,以及与处理器中可用的不同低功率状态相关联的一个或多个计数器的值。例如,每一个C状态可以具有与其相关联的特定于机器的寄存器(MSR),该MSR可以用于对给定的低功率模式的持续时间进行计数。在每一次收集之后,可以判断是否完成了收集(菱形框60)。例如,在各个实施例中,功率分布图描绘器可以被配置为:针对预定的时间量或者预定数量的功率状态事件等等,对数据进行收集。如果没有完成收集,则控制权传递回到方框50。
[0030]否则,控制权传递到方框70,其中在方框70,可以对通过这些收集所获得的功率状态转换信息进行处理,并向用户进行报告。应当注意,虽然在图2的实施例中,以相对较高的级别进行了讨论,但应当理解的是,在不同的实施例中各种细节和修改都是可能的。
[0031]现参见图3,示出的是根据本发明一个实施例的收集方法的流程图。如上所述,在一些实施例中,该收集方法可以通过对驱动程序的函数调用来实现,其中该驱动程序可以访问保存在诸如MSR、系统计数器等等之类的特权资源中的信息。但是,在其它实施例中,应当理解的是,收集可以在用户模式下发生。在图3中,方法100可以开始于在方框110读取系统时钟。在各个实施例中,该系统时钟可以对应于时间戳计数器,时间戳计数器存在于将被设置为低功率状态的核心上。因此,应当理解的是,可以按照核心的粒度来执行这些收集操作,这是由于可以对处理器进行控制以针对每个核心执行功率管理。但是,在其它实施例中,处理器可以只提供封装级别的功率管理,因此在这些实施例中,可以获得封装级别的信息。在其它实现中,可以获得核心级别和封装级别的功率状态信息的组合。
[0032]仍然参见图3,将读取的系统时钟值存储在缓冲区中(方框120)。更具体地,对于每一次收集,可以分配该缓冲区的一个条目,所述条目可以用于存储该系统时钟值连同与每一个可用的低功率状态相关联的单调计数器的值。
[0033]因此,在图3中进一步观察到,对于该处理器中可用的每一个可能的睡眠状态(如菱形框130所确定的),遍历包括下面各项的循环:读取用于该低功率状态的相应驻留期计数器(方框140)(其可以通过读取用于该低功率状态的MSR来实现),将该计数器值写入到缓冲区中的该条目(方框150)。当读取完针对可用的低功率状态的所有这些计数器时,方法100结束。因此,完成了针对该功率状态转换事件的收集过程,将获得的信息存储在缓冲区条目中。应当注意,虽然在图3的实施例中使用该特定的信息集合进行了描述,但应当理解的是,本发明的范围并不限于此,在其它实施例中,可以获得另外的或者不同的信息。例如,在一个实施例中,该另外的信息可以包括:OS所请求的低功率状态(其可能不是该硬件实际所使用的低功率状态)。
[0034]可以对诸如参照图3所描述的收集过程执行很多次。当收集了期望数量的数据时,功率分布图描绘器可以执行各种操作,以读取数据以进行进一步处理,以及终止该数据收集。现参见图4,示出的是根据本发明实施例用于终止数据收集的方法的流程图。如图4中所示,方法200可以在卸载设备驱动程序的过程(方框210)中,执行各种动作。通常,在卸载之前,驱动程序对数据进行刷新(例如,将其写到磁盘)、释放缓冲区、对该收集函数进行注销。可以在每一次收集之后,发生这些步骤(除了卸载驱动程序之外)。(在LinuxTM0S中)可以使用“insmod”或“rmmod”命令手工地插入和删除该驱动程序,或者可以在启动时自动地装载该驱动程序,并且该驱动程序永不被删除。最后,在一些OS上,设备驱动程序可以由特定的用户模式系统调用进行装载和卸载。在这些实现中,顺序可以是:(I)装载该驱动程序;(2)某个时间之后,运行收集;(3)重复步骤2 (如果期望的话);以及(4)卸载该驱动程序。此外,应当注意,在一些实现中,可以将所收集的数据返回给对这些收集进行控制的用户级代码,该用户级代码将该数据保存到文件中。换言之,驱动程序实际上并不向文件进行写,替代地其将缓冲区传送给用户级代码,用户级代码在收集期间,将该数据写入到文件中。在LinuxTMOS中,这种类型的设备驱动程序称为‘字符’驱动程序。
[0035]如所看到的,该方法开始于方框215,其中在方框215,将缓冲区写入到文件中。例如,可以将该缓冲区(如上所述,其可以位于处理器的高速缓存中的临时存储器之中)转发给文件系统,并例如可以在系统存储器中存储成数据文件220,以便稍后访问。接着,控制权传递到方框225,其中在方框225,可以对该缓冲区进行释放,使得其被返回到OS的资源池中。最后,控制权传递到方框230,其中在方框230,对该收集函数进行注销。也就是说,可以对注册了该收集函数的OS跟踪点或者其它内核(或者其它位置)进行注销,使得在功率状态转换事件期间不再调用该函数。此时,可以卸载该设备驱动程序。
[0036]因此,此时,已经获得了期望的功率状态信息,并且可以对其进行进一步处理,以便使用户或者诸如系统的分析工具之类的其它实体能够对其进行分析。现参见图5,示出的是根据本发明实施例用于处理所收集的数据的方法的流程图。如图5中所示,方法250可以开始于对数据文件220进行处理(方框260)。在一个实施例中,该处理可以包括:将数据与什么造成该处理器转换回活动状态的描述(例如,定时器或者中断,或者甚至源代码调用栈的描述,其中该源代码调用栈导致了造成转换回活动状态的事件)进行关联。此时,例如,通过功率分布图描绘器的应用,因此数据处于待处理的格式。
[0037]仍然参见图5,控制权传递到方框265,其中在方框265,可以从数据文件中读取与针对第一功率状态转换事件的收集相对应的第一采样。随后,如菱形框270所确定的,针对该文件中的每一个另外的采样,执行循环。具体而言,在该循环中,在方框275,可以计算当前采样和前一采样之间的流逝时间(方框275)。此外,在方框280,可以计算当前采样的驻留期计数器中的每一个与前一采样的驻留期计数器中的每一个之间的差。在方框290,可以将所计算得到的结果存储在一个表中。因此,对于每一对相邻采样,可以确定前一次进入到低功率状态和当前进入到低功率状态之间的流逝时间(如由多个系统时钟之间的差所确定的)。此外,基于相应的驻留期计数器之间的差,可以确定先前转换到低功率时所进入的给定低功率状态,以及确定处于该低功率状态的持续时间。因此,对于每一对采样,可以确定两个功率状态事件之间流逝的时间,以及确定前一次低功率进入的持续时间和类型。因此,可以将这些值连同其它驻留期计数器的差(其可以都等于零)存储在所述表格的一个条目中。因此,针对数据文件中的每一个另外的采样,该循环继续。
[0038]在该处理结束时,控制权传递到方框295,其中在方框295,将结果输出给用户。例如,该输出可以采用时间轴的形式,其中该时间轴描述在收集期间的活动,或者可以将输出显示成直方图,其中该直方图描述如何频繁地使用一个状态,等等。举一些例子,该输出可以是平台的显示器上的打印输出或者用户可视显示。另外,还可以使存储在该表中的结果以机器可读形式可用,以便其它分析和控制工具(例如,编译器、OS或其它工具)进行使用。举一个例子,可以以人类可读形式和/或计算机可读形式,来向OS实体提供该表中的信息。OS开发人员和/或运行的OS自己可以使用该信息,来提高关于功率管理决定的性能。例如,开发人员可以基于所接收的信息,来更新OS的功率管理代码。
[0039]举一个这种示例(如上所述),处理器硬件可以选择进入与OS所请求的低功率状态不相同的低功率状态。基于该表中的可用信息(即,按照给定的时间间隔进入的特定的低功率状态的持续时间和类型),OS实体可以确定,其进入低功率状态的请求未被接受,被接受的是处理器对不同的低功率状态的选择。基于该信息,OS实体可以修改其功率管理算法和/或启发,以便在例如未来的OS版本中进行不同的功率管理决策。此外,在以计算机可读形式向在平台上运行的当前OS实例提供该信息的实施例中,该OS实例可以实时地更新其控制算法,并在其它执行中,基于该信息来进行更佳的决策。虽然在图5的实施例中使用该特定实现进行了示出,但应当理解的是,本发明的范围并不限于此。
[0040]现参见图6,示出的是根据本发明实施例的处理器的框图。如图6中所示,处理器400可以是包括多个核心410a- 410n的多核处理器。在一个实施例中,每一个这种核心可以包括具有下面各项的流水线:例如,前端单元、乱序逻辑、执行单元、以及诸如引退逻辑的后端单元。除了如上所述的之外,每一个核心还可以包括多个计数器,其中这些计数器可以实现成诸如特定于机器的寄存器之类的寄存器、性能监测器等等。在图6的实施例中,这些计数器包括时间戳计数器412。计数器412可以被配置为按照该处理器的标称频率(例如,根据机器周期)进行计数,并且在一些实施例中,计数器412可以连续地计数,而不管该核心(或者处理器,只要向该处理器供电即可)的功率状态和多个低功率计数器414b如何,其中每一个这种计数器都对该核心处于给定的低功率状态的周期进行计数。
[0041]各个核心可以通过互连415耦接到包括各个组件的非核心420。如所看到的,非核心420可以包括共享的高速缓存430,其可以是末级高速缓存。此外,非核心可以包括集成存储器控制器440、各种接口 450和功率控制单元455,在一些实施例中,这些部件可以用于独立于OS进入和退出低功率状态。如所看到的,处理器400可以通过例如存储器总线,与系统存储器460进行通信。此外,通过接口 450,可以连接到诸如外围设备、大容量存储器等等之类的各种片外组件。虽然在图6的实施例中使用该特定实现进行示出,但本发明的范围并不限于此。
[0042]实施例可以在多种不同的系统类型中实现。现参见图7,示出的是根据本发明实施例的系统的框图。如图7中所示,多处理器系统500是点对点互连系统,并且包括通过点对点互连550耦接的第一处理器570和第二处理器580。如图7中所示,处理器570和580中的每一个可以是多核处理器(包括第一和第二处理器核心(即,处理器核心574a和574b以及处理器核心584a和584b)),但在这些处理器中,可以潜在地存在更多的核心。这些核心中的每一个可以包括各种驻留期计数器和系统计数器,如上所述。
[0043]仍然参见图7,第一处理器570还包括存储器控制器中心(MCH) 572和点对点(P-P)接口 576和578。类似地,第二处理器580包括MCH582和P-P接口 586和588。如图7中所示,MCH572和582将处理器耦接到各自的存储器(即,存储器532和存储器534),这些存储器可以是本地连接到各自处理器的主存储器(例如,动态随机存取存储器(DRAM))的一部分。第一处理器570和第二处理器580可以分别通过P-P互连552和554耦接到芯片集590。如图7中所示,芯片集590包括P-P接口 594和598。
[0044]此外,芯片集590包括接口 592,以便通过P-P互连539将芯片集590与高性能图形引擎538进行耦合。芯片集590则可以通过接口 596耦接到第一总线516。如图7中所示,各种输入/输出(I/O)设备514可以耦接到第一总线516以及总线桥518,总线桥518将第一总线516耦接到第二总线520。各个设备可以耦接到第二总线520,包括例如:键盘/鼠标522、通信设备526和数据存储单元528(例如,可以包括例如用以执行根据本发明实施例的功率分布图描绘的代码530的磁盘驱动器或其它大容量存储设备)。此外,音频I/0524可以耦接到第二总线520。
[0045]实施例可以用代码实现,并且实施例可以存储在其上存储有指令的存储介质上,其中所述指令可以用于对系统进行编程以执行这些指令。该存储介质可以包括,但不限于:任何类型的非临时存储介质,例如,包括软盘、光盘、光盘、固态驱动器(SSD)、紧致碟只读存储器(⑶-ROM)、可重读紧致碟(⑶-RW)和磁光盘在内的磁盘,诸如只读存储器(ROM)、随机存取存储器(RAM)(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPR0M)、闪存、电可擦除可编程只读存储器(EEPR0M)、磁卡或光卡之类的半导体设备,或者适合于存储电子指令的任何其它类型的介质。
[0046]虽然已经参照有限数量的实施例描述了本发明,但本领域技术人员应当理解的是,可以对其进行各种的修改和变化。所附权利要求书旨在覆盖落入本发明的真实精神和范围之内的所有这样的修改和变形。
【权利要求】
1.一种方法,包括: 注册当在系统的组件中发生功率状态转换事件时要被调用的功率分布图描绘器; 分配用于存储与所述功率状态转换事件有关的信息的缓冲区;以及 在发生所述功率状态转换事件时,读取系统计数器值和所述组件的一个或多个低功率状态中的每一个低功率状态的计数器值,并将所述系统计数器值和一个或多个计数器值写入所述缓冲区中。
2.根据权利要求1所述的方法,还包括: 在没有发生中断或定时器到期的情况下,读取所述系统计数器值和多个计数器值。
3.根据权利要求2所述的方法,还包括: 将控制权从操作系统(OS)传递到所述功率分布图描绘器的设备驱动程序的收集函数,以读取所述系统计数器值和所述多个计数器值。
4.根据权利要求3所述的方法,还包括: 在所述OS的跟踪点中,插入对所述收集函数的调用。
5.根据权利要求1所述的方法,还包括: 针对多个功率状态转换事件中的每一个功率状态转换事件,读取所述系统计数器值和多个计数器值,以及针对所述多个功率状态转换事件中的每一个功率状态转换事件,将所述系统计数器值和所述多个计 数器值写入所述缓冲区。
6.根据权利要求5所述的方法,还包括: 基于在第一功率状态转换事件和第二功率状态转换事件时读取的所述系统计数器值,来确定所述第一功率状态转换事件和所述第二功率状态转换事件之间的流逝时间,以及基于在所述第一功率状态转换事件和所述第二功率状态转换事件时读取的所述多个计数器值,来确定在所述第一功率状态转换事件之后所进入的低功率状态的持续时间和类型。
7.根据权利要求6所述的方法,还包括: 确定在所述第一功率状态转换事件和所述第二功率状态转换事件时读取的所述系统计数器值之间的差。
8.根据权利要求6所述的方法,还包括: 向请求所述第一功率状态转换事件的操作系统提供包括所述持续时间和所述低功率状态类型的信息。
9.根据权利要求8所述的方法,还包括: 修改所述操作系统的行为,其中所述操作系统请求所述第一功率状态转换事件为一种不同的类型,所述组件将所述请求重写为与所述低功率状态类型相对应的一种不同的低功率状态。
10.根据权利要求6所述的方法,还包括: 在表中记录所述流逝时间、所述持续时间和所述低功率状态类型。
11.一种包括机器可访问存储介质的制品,所述机器可访问存储介质包括在被执行时使系统执行下面操作的指令: 在不存在定时器到期或不存在中断触发的情况下,在针对多核处理器的核心发生第一方向的多个功率状态转换事件中的每一个功率状态转换事件时,读取所述核心的系统计数器的值和所述核心的多个低功率计数器中的每一个低功率计数器的值;将针对所述多个功率状态转换事件中的每一个功率状态转换事件的系统计数器值和多个低功率计数器值存储在所述多核处理器的存储器中;以及 在所述多个功率状态转换事件之后,访问所述存储器,以使用所存储的系统计数器值和所存储的多个低功率计数器值来确定所述多核处理器的功率分布图。
12.根据权利要求11所述的制品,还包括在被执行时使所述系统能够执行下面操作的指令: 基于在第一功率状态转换事件和第二功率状态转换事件时读取的所述系统计数器值,来确定所述第一功率状态转换事件和所述第二功率状态转换事件之间的流逝时间,以及基于在所述第一功率状态转换事件和所述第二功率状态转换事件时读取的所述多个低功率计数器值,来确定在所述第一功率状态转换事件之后所进入的低功率状态的持续时间和类型。
13.根据权利要求12所述的制品,还包括在被执行时使所述系统能够执行下面操作的指令: 在表中记录所述流逝时间、所述持续时间和所述低功率状态类型,以及向请求所述第一功率状态转换事件的操作系统提供包括所述持续时间和所述低功率状态类型的信息。
14.根据权利 要求13所述的制品,还包括在被执行时使所述系统能够执行下面操作的指令: 当所述多个功率状态转换事件中的每一个功率状态转换事件发生时,从通知机制调用功率分布图描绘器的函数,以读取所述系统计数器值和所述多个低功率计数器值。
15.根据权利要求14所述的制品,还包括在被执行时使所述系统能够执行下面操作的指令: 分配用于存储所述系统计数器值和所述多个低功率计数器值的缓冲区。
16.根据权利要求11所述的制品,还包括在被执行时使所述系统能够执行下面操作的指令: 将控制权从操作系统传递到所述功率分布图描绘器的设备驱动程序的收集函数,以读取所述系统计数器值和所述多个低功率计数器值。
17.—种系统,包括: 多核处理器,其包括多个核心,每个核心包括前端逻辑单元、乱序逻辑单元、后端逻辑单元、用于存储周期计数的时间戳计数器以及多个低功率状态计数器,所述多个低功率状态计数器中的每一个低功率状态计数器用于对该核心处于相应的低功率状态的周期进行计数;以及 功率分布图描绘器,用于针对所述多核处理器的一个或多个低功率状态中的每一个低功率状态,读取所述时间戳计数器和所述多个低功率状态计数器,并将所述时间戳计数器的值和所述多个低功率状态计数器的值写入缓冲区中。
18.根据权利要求17所述的系统,其中,所述功率分布图描绘器用于针对第一方向的连续多个功率状态转换事件,读取所述时间戳计数器和所述多个低功率状态计数器。
19.根据权利要求18所述的系统,其中所述功率分布图描绘器用于在不存在定时器到期或不存在中断触发的情况下读取所述时间戳计数器和所述多个低功率状态计数器。
20.根据权利要求17所述的系统,其中所述功率分布图描绘器包括由操作系统的通知机制调用的收集函数,所述通知机制在进入所述一个或多个低功率状态中的每一个低功率状态的功率状态转换事 件期间执行。
【文档编号】G06F1/32GK103443737SQ201180069528
【公开日】2013年12月11日 申请日期:2011年12月30日 优先权日:2011年3月24日
【发明者】R·奈特 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1