调频方法和调频装置与流程

未命名 07-15 阅读:101 评论:0


1.本技术涉及处理器的调频技术领域,尤其涉及一种调频方法和调频装置。


背景技术:

2.在电子设备中,屏幕的显示是一个至关重要的环节。为了提供流畅的用户体验,屏幕需要在规定的时间内完成帧画面的绘制和显示,这个规定的时间即为目标帧长。然而,在某些情况下,帧绘制需要的时间超过了目标帧长,导致屏幕不能及时显示新内容,此时屏幕上会保留上一帧的内容,直至新一帧绘制完毕并显示。这类情况就会出现屏幕上一帧画面停留时间较长,也就是画面卡顿的情况,影响用户的使用体验。
3.为了避免画面卡顿的发生,需要保证每一帧内容在目标帧长内完成计算。当所需要计算的负载一定时,提高处理器的频率即可加快计算速率,缩短计算所需的时长。但提升处理器的频率也随之带来了功耗的增长。
4.因此如何对处理器进行合理的调频,以平衡计算效率与功耗,即在保证不卡顿的情况下取得尽可能低的功耗,是亟待解决的技术问题。


技术实现要素:

5.本技术提供一种调频方法和调频装置,能够对处理器进行合理的调频,在保证不卡顿的情况下取得尽可能低的功耗。
6.第一方面,提供了一种调频方法,该方法包括:将在目标进程的第一时间段内处于目标进程的关键路径的第一关键线程的执行处理器确定为第一处理器;第一关键线程在第一时间段内的计算负载高于其他关键线程在第一时间段内的计算负载,且高于非关键线程在第一时间段内的计算负载;第一时间段是根据关键路径得到的;在第一时间段内,利用目标进程的剩余处理时长和/或剩余负载,确定第一处理器的目标频点;利用第一时间段内的任意调频时机,根据第一处理器的目标频点对第一处理器进行调频。
7.在本技术技术方案中,主要通过锁定在目标进程的一段时间段内对于计算时长影响最大的关键线程,然后针对该关键线程去确定目标频点和进行调频,从而实现了更加精细化的调频,该帧内针对特定处理器的精细调频方式相比于传统的帧间所有处理器的统一调频的方式,更能满足计算需求,且能降低功耗。
8.关键线程可以理解为对于整个进程的计算时长影响较大的线程。而非关键线程就可以理解为是对于整个进程的计算时长影响较小的线程。例如可以设定计算负载(也就是计算量)的预设阈值,当某个线程的计算负载大于或等于这个预设阈值,就认为这个线程是关键线程;或者,当该线程的计算负载小于这个预设阈值,就认为这个线程是非关键线程。这个计算负载可以是运算量,也可以是归一化的运算时长,也就是利用一个标准处理器,处理完这个线程需要的计算时长。该预设阈值还可以是计算负载在整个进程的总计算负载中的占比的阈值,当某个线程的计算负载在整个进程的总计算负载中的占比大于或等于预设阈值的时候,认为该线程为关键线程;或者,当这个线程的计算负载在整个进程的总计算负
载中的占比小于预设阈值的时候,认为该线程为非关键线程。
9.如上所述,第一关键线程是在第一时间段内所有关键线程中计算负载最高的线程。在整个进程的执行期间,每个时间点正在执行的线程并不相同,在整个期间,有些线程可能较早执行有些线程可能较晚执行,以及在不同时间段计算负载最高的线程未必相同。
10.如上文所述,电子设备会包括多个处理器,对于一个进程的多个线程而言,处理器可能不同,而此处的第一处理器就是第一关键线程的执行处理器。
11.关键路径可以理解为关键线程的切换路径,也可以理解为是关键线程中计算负载最高的线程所组成的路径。
12.本技术实施例就是将调频精细到了进程的具体时间段,针对进程中某个具体时间段对于计算时长影响最大的线程,也就是计算负载最高的第一关键线程,来针对性调整这个第一关键线程的执行处理器的频率,而不是笼统的所有线程的所有处理器一起调频,因此能够保证在满足计算效率的前提下,还能降低功耗。
13.结合第一方面,在第一方面的某些实现方式中,在利用第一时间段内的任意调频时机,根据第一处理器的目标频点对第一处理器进行调频时,可以包括:在第一时间段内的任意调频时机,当第一处理器的目标频点大于或等于第一处理器的实际频点时,对第一处理器进行提频;或者,当第一处理器的目标频点小于第一处理器的实际频点时,对第一处理器进行降频。
14.在一帧内,存在大量调频时机,如任务迁核,任务唤醒等,调频时机可能出现在关键路径的任意阶段的任何时间点。每次调频时机,都检查此时一帧的执行状态,衡量此时计算进度是否符合预期。若计算进度落后,则提频加快计算,若进度超前,则降频节省功耗。具体衡量的方式即为对此阶段处于关键路径上的任务的计算负载进行度量。由于关键路径和关键线程在如游戏等一类应用中相对固定,因此可以使用历史信息预测关键路径的每个阶段中,对应的关键线程的计算负载和计算时长。当调频时机到来时,检查当前阶段对应关键线程在本阶段已经完成的计算量和已经经过的时间,与本阶段的预计时长和预计计算量对比,即可得到剩余负载和剩余时长,通过剩余负载/剩余时长,即可得到应设的cpu频点,也就是目标频点,之后就可以在任意调频时机按照该目标频点进行提频或者降频了。
15.结合第一方面,在第一方面的某些实现方式中,目标进程为屏幕画面的显示进程;第一关键线程为主逻辑线程或显示线程。
16.在一个例子中,第一时间段是显示进程较早的时间段,此时,第一关键线程为主逻辑线程。例如,主逻辑线程是在整个显示进程中需要较早执行的线程,并且发现这第一时间段内,主要的运算压力(计算负载)都在主逻辑线程上,那么就把主逻辑线程作为了第一关键线程,并且在第一时间段内执行后续步骤,对主逻辑线程的执行处理器进行调频。
17.在另一个例子中,第一时间段是显示进程较晚的时间段,此时,第一关键线程为显示线程。例如,显示线程是在整个显示进程中需要较晚执行的线程,并且发现这第一时间段内,主要的运算压力(计算负载)都在显示线程上,那么就把显示线程作为了第一关键线程,并且在第一时间段内执行后续步骤,对显示线程的执行处理器进行调频。
18.结合第一方面,在第一方面的某些实现方式中,上述方法还包括:
在第一时间段内,对第三处理器进行降频,第三处理器为目标进程对应的处理器中除第一处理器之外的处理器。
19.在该实现方式中,对于其他关键线程和非关键线程的处理器都降频,使得功耗节省更充分。
20.应理解,第三处理器可以是第二处理器,因为在第一时间段内,第二处理器不是处在关键路径上的关键线程的处理器。
21.结合第一方面,在第一方面的某些实现方式中,上述方法还包括:获取目标进程的多个关键线程,多个关键线程中每个关键线程的计算负载在目标进程的总计算负载中的占比均大于或等于预设阈值;多个关键线程的计算负载高于非关键线程的计算负载;根据多个关键线程,确定关键路径,关键路径将目标进程分为多个时间段,多个时间段包括第一时间段;将多个关键线程中在第一时间段内的计算负载最高的关键线程,确定为第一关键线程。
22.也就是说,在这种实现方式中给出了关键路径和第一关键线程怎么确定的方案,先对目标进程的所有线程进行筛选,筛选出多个关键线程来,然后根据这多个关键线程确定出关键路径,这个关键路径就会将整个目标进程的处理时长(例如一帧画面的整个显示进程的时长)切分成多个时间段。由于对于一个进程而言,几乎不会出现一个线程从始至终都在执行,而且一直是计算负载最大,因为这不符合进程的处理逻辑。所以对于一个进程而言,必然会出现不同时间段处于关键路径上的线程有变化的情况。
23.结合第一方面,在第一方面的某些实现方式中,在根据多个关键线程,确定关键路径时,可以包括:根据多个关键线程之间的唤醒关系,确定关键路径。
24.也就是说,可以通过关键线程之间的唤醒关系,确定出关键路径,在关键路径切分出的多个时间段中,处于关键路径上的关键线程不同,执行唤醒的关键线程会在较早的时间段中处于关键路径上,被唤醒的对象(被唤醒的关键线程)会在较晚的时间段中处于关键路径上。
25.在另一个例子中,上述根据多个关键线程,确定关键路径的步骤可以包括:根据多个关键线程的计算负载的统计数据,进行分析,确定出计算负载最大的关键线程的切换路径,该切换路径即为上述关键路径。
26.需要说明的是,本技术主要针对的是关键路径相对固定的情景,例如上述显示进程,对于一个显示进程最复杂的运算是稳定集中在绘制阶段和送显阶段的。而在实际中,大多数进程都是有相对固定的关键路径的。也就是说,上述获取关键线程、确定关键路径,确定第一关键线程,不需要在每次执行锁定第一处理器之前都执行一遍。
27.结合第一方面,在第一方面的某些实现方式中,上述方法还包括:将在目标进程的第二时间段内处于关键路径的第二关键线程的执行处理器确定为第二处理器;第二关键线程在第二时间段内的计算负载高于其他关键线程在第二时间段内的计算负载,且高于非关键线程在第二时间段内的计算负载;第二时间段是根据关键路径得到的,第二时间段的起点为第一时间段的终点,或者,第二时间段的终点为第一时间段
的起点;在第二时间段内,利用目标进程的剩余处理时长和/或剩余负载,确定第二处理器的目标频点;利用第二时间段内的任意调频时机,根据第二处理器的目标频点对第二处理器进行调频。
28.也就是说,关键路径将目标进程分成的多个时间段中,对于不同的时间段,如果存在的处在关键路径上的关键线程不同,那么就针对不同时间段的不同的处在关键路径的关键线程进行调频。
29.结合第一方面,在第一方面的某些实现方式中,在利用第二时间段内的任意调频时机,根据第二处理器的目标频点,对第二处理器进程调频时,可以包括:在第二时间段内的任意调频时机,当第二处理器的目标频点大于或等于第二处理器的实际频点时,对第二处理器进行提频;或者,当第二处理器的目标频点小于第二处理器的实际频点时,对第二处理器进行降频。
30.结合第一方面,在第一方面的某些实现方式中,目标进程为屏幕画面的显示进程;当第二时间段的起点为第一时间段的终点时,第一关键线程为主逻辑线程,第二关键线程为显示线程;或者,当第二时间段的终点为第一时间段的起点时,第一关键线程为显示线程,第二关键线程为主逻辑线程。
31.结合第一方面,在第一方面的某些实现方式中,上述方法还包括:在第二时间段内,对第四处理器进行降频,第四处理器为目标进程对应的处理器中除第二处理器之外的处理器。
32.应理解,第四处理器可能是第一处理器,因为在第二时间段内,第一处理器不再是处于关键路径上的关键线程的处理器了,所以对第一处理器进行降频并不会影响整体方案的效果,且能够进一步降低功耗。
33.结合第一方面,在第一方面的某些实现方式中,上述方法还包括:获取目标进程的多个关键线程,多个关键线程中每个关键线程的计算负载在目标进程的总计算负载中的占比均大于或等于预设阈值;多个关键线程的计算负载高于非关键线程的计算负载;根据多个关键线程,确定关键路径,关键路径将目标进程分为多个时间段,多个时间段包括第一时间段和第二时间段;将多个关键线程中在第一时间段内的计算负载最高的关键线程,确定为第一关键线程;以及,将多个关键线程中在第二时间段内的计算负载最高的关键线程,确定为第二关键线程。
34.在这种实现方式中,主要给出了两个关于出关键路径的关键线程的确定方法,就是将不同时间段内的计算负载最高的关键线程确定为第一关键线程和第二关键线程。这就使得后续调频针对的都是计算负载最高的关键线程,也就是对于整个目标进程的计算时长影响最大的关键线程。有针对性锁定这样的关键线程和进行调频,使得调频相比于传统方案更加精细化,在满足时长要求的情况下还能减小功耗。
35.第二方面,提供了一种调频装置,该装置包括由软件和/或硬件组成的用于执行第一方面中的任意一种方法的单元。
36.第三方面,提供了一种电子设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,当处理器执行计算机程序时电子设备能够实现第一方面中的任意一种方法。
37.第四方面,提供了一种芯片,应用于电子设备,包括处理器,该处理器用于读取并执行存储在存储器中的计算机程序,当计算机程序被处理器执行时电子设备能够实现第一方面中的任意一种方法。
38.可选地,该芯片还包括存储器,存储器与处理器电连接。
39.可选地,该芯片还可以包括通信接口。
40.第五方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,当计算机程序被电子设备执行时能够实现第一方面中的任意一种方法。
41.第六方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,当计算机程序被电子设备执行时能够实现第一方面中的任意一种方法。
附图说明
42.图1是本技术实施例的一种电子设备的处理器架构示意图。
43.图2是本技术实施例的一种显示进程的工作流程示意图。
44.图3是本技术实施例的一种调频方法的示意性流程图。
45.图4是本技术实施例的一帧内的负载情况示意图。
46.图5是本技术实施例的一帧内的负载情况的另一示意图。
47.图6是本技术实施例的一种调频架构示意图。
48.图7是本技术实施例的调频方案的时序图的示意图。
49.图8是本技术实施例的一种调频装置的示意图。
50.图9是本技术实施例的一种电子设备的硬件结构的示意图。
具体实施方式
51.下面结合附图对本技术实施例的方案进行介绍。
52.在一个进程中,往往需要多个线程参与计算。例如,在一个屏幕画面的显示进程中,也就是让屏幕显示画面的进程,包括显示内容的准备处理和显示。这期间需要多个线程参与计算所需要显示的内容,有些线程之间可能存在一定的依赖关系,而有的线程之间的依赖关系并不明显。这些线程可能是并行执行,也可能是串行执行。互不依赖的线程可以并行执行也可以串行执行,而有依赖关系的线程之间就需要串行执行。比如线程a需要基于线程b得到的计算结果继续计算,那么线程a和线程b之间就是串行执行的关系,需要先执行完线程b才能执行线程a。又例如,线程c和线程d,虽然线程c需要基于线程d的计算结果进行继续计算,但是线程d的一系列计算结果是边处理边输出的,那么线程c和线程d可能就是一种交错并行执行,也就是线程d先执行,等线程d有结果输出了线程c就开始执行,而不需要一直等到线程d全部计算完成才开始。那么线程c和线程d是先串行后并行。也就是说,线程c和线程d虽然存在并行关系,但同时也存在着依赖关系。
53.对于某个进程,所包含的多个线程可以分布在多个处理器上,这多个处理器可能会被分为多个处理器组(cluster),每个cluster内的所有处理器的频点相同。因此,如果调整某个cluster的频点,就会让该cluster内的所有处理器的频点都调整到目标频点。
54.需要说明的是,在本技术实施例中,处理器可以是中央处理单元(central processing unit,cpu),或者是图形处理器(graphics processing unit,gpu),或者是其他通用处理器。
55.还应理解,本技术实施例适用的是拥有多个处理器的电子设备,这样才会出现不同线程执行的处理器不是同一个的情况,也才能出现线程的并行处理。如果电子设备只有一个处理器,那么所有线程都只能这一个处理器串行处理,无法适用本技术所述的方案,因此单个处理器的情况并不在本技术所涉及范围内。
56.图1是本技术实施例的一种电子设备的处理器架构示意图。如图1所示,以电子设备100包括3个处理器组(即3个cluster)为例,在图1中分别用cls0、cls1和cls2表示。
57.其中,cls0中包括三个处理器,如图1所示的cpu0、cpu1和cpu2。cls1中包括四个处理器,如图1所示的cpu3、cpu4、cpu5和cpu6。cls1中包括一个处理器,如图1所示的cpu7。
58.也就是说,图1以该电子设备100包括8个cpu处理器,且8个处理器被分成了三组为例的。但应理解,在实际中,电子设备的处理器架构还可能存在其他情况,例如可能cluster的数量不是3个,是其它大于或等于2的整数。又例如,可能每个cluster内的处理器数量跟图1不同。再例如,可能某个或某几个cluster中的处理器为gpu等,不再逐一列举。
59.在一个例子中,图1中的cls0中的cpu为小核,也就是容量较小;cls1中的cpu为中核,也就是容量适中,cls2中的cpu为大核,也就是容量较大。在一个示例中,小核的容量为280,中核的容量为855,大核的容量为1024。
60.下面结合图2,以进程为显示进程为例,介绍同一个进程下的多个线程之间的协同工作情况。
61.图2是本技术实施例的一种显示进程的工作流程示意图。对于一个显示进程而言,以游戏场景为例,对于基于unity引擎的游戏,显示进程的线程包括主逻辑线程(unity main thread),显示线程(unity gfx device),多重渲染线程(unity multi render thread)和作业线程(worker)等,它们之间的协同工作流程如图2所示。
62.主逻辑线程执行完主逻辑处理之后,需要作业线程(图2所示的多个worker)执行作业处理,然后唤醒多重渲染线程进行渲染的操作,之后显示线程将渲染完成后的画面送显到屏幕上呈现给用户。也就是说,首先由主逻辑线程完成逻辑计算,计算出需要在一帧内显示的内容,以及相关的材质、光影等信息;之后唤醒多重渲染线程,由多重渲染线程实施渲染,以及显示线程将渲染好的画面送显。
63.可以看出一帧画面的呈现的显示进程中,是需要多个线程参与计算处理的,这些线程处理的快慢直接影响到整个画面的呈现是否流畅。如果其中的某个或某些线程在处理上占用了太多时间,就会导致画面不能及时更新,出现卡顿。
64.在传统方案中,为了避免卡顿,会考虑将这个显示进程的所有相关处理器统一进行提频,但这种处理方式势必会带了较大的功耗。而本技术则针对上述问题,通过更加精细的调频方式,来均衡提高效率和降低功耗这两个需求。
65.图3是本技术实施例的一种调频方法的示意性流程图。下面对图3所示步骤进行介
绍。
66.s301、将在目标进程的第一时间段内处于目标进程的关键路径的第一关键线程的执行处理器确定为第一处理器。
67.第一关键线程在第一时间段内的计算负载高于其他关键线程在第一时间段内的计算负载,且高于非关键线程在第一时间段内的计算负载;第一时间段是根据关键路径得到的。
68.关键线程可以理解为对于整个进程的计算时长影响较大的线程。而非关键线程就可以理解为是对于整个进程的计算时长影响较小的线程。例如可以设定计算负载(也就是计算量)的预设阈值,当某个线程的计算负载大于或等于这个预设阈值,就认为这个线程是关键线程;或者,当该线程的计算负载小于这个预设阈值,就认为这个线程是非关键线程。这个计算负载可以是运算量,也可以是归一化的运算时长,也就是利用一个标准处理器,处理完这个线程需要的计算时长。该预设阈值还可以是计算负载在整个进程的总计算负载中的占比的阈值,当某个线程的计算负载在整个进程的总计算负载中的占比大于或等于预设阈值的时候,认为该线程为关键线程;或者,当这个线程的计算负载在整个进程的总计算负载中的占比小于预设阈值的时候,认为该线程为非关键线程。
69.为了便于理解,结合具体数值举例说明。假设某个进程包括abcdefgh共8个线程。在一个示例中,假设这8个线程的计算负载分别为100,500,300,214,600,800,700,20,单位此处为了简洁,不做约束,假设计算负载的预设阈值是320,那么可以得出,关键线程为befg四个线程,非关键线程为acdh四个线程。在另一个示例中,假设这8个线程的计算负载在整个进程的总计算负载中的占比分别为:线程a为10%,线程b为15%,线程c为20%,线程d为20%,线程e为3%,线程f为8%,线程g为21%,线程h为3%,假设预设阈值为20%,那么可以得出,关键线程为cdg,非关键线程为abefh。
70.应理解,上述具体数值的示例只是为了方便理解方案,并不存在限定,对于其他可能的数值情况不再逐一列举。
71.如上所述,第一关键线程是在第一时间段内所有关键线程中计算负载最高的线程。在整个进程的执行期间,每个时间点正在执行的线程并不相同,在整个期间,有些线程可能较早执行有些线程可能较晚执行,以及在不同时间段计算负载最高的线程未必相同。
72.如上文所述,电子设备会包括多个处理器,对于一个进程的多个线程而言,处理器可能不同,而此处的第一处理器就是第一关键线程的执行处理器。
73.关键路径可以理解为关键线程的切换路径,也可以理解为是关键线程中计算负载最高的线程所组成的路径。以图2为例,假设显示进程的整个处理时长是t0-t2,t0和t2分别表示起始时刻和结束时刻,t1是介于t0和t2之间的时刻,在t1时刻,计算负载最高的线程发生了变化,此处假设在t1时刻之前,也就是t0-t1时刻之间,计算负载最高的是主逻辑线程,在t1时刻之后,也就是t1-t2时刻之间,计算负载最高的是显示线程。那么,关键路径就是:在t1时刻,从t0-t1时刻之间的主逻辑线程切换至t1-t2之间的显示线程。假设t0-t1时刻之间的时间段为此处的第一时间段的示例,那么,在执行s301时,就是锁定了第一时间段内处于关键路径的是主逻辑线程(第一关键线程的一例),然后基于主逻辑线程假设锁定了cpu5是其执行处理器(第一关键线程的执行处理器的一例),那么就将cpu5作为第一处理器。假设t1-t2时刻之间的时间段为此处的第一时间段的示例,那么,在执行s301时,就是锁定了
第一时间段内处于关键路径的是显示线程(第一关键线程的一例),然后基于显示线程假设锁定了cpu7是其执行处理器(第一关键线程的执行处理器的一例),那么就将cpu7作为第一处理器。应理解,此处是为了便于理解进行示例,具体第一关键线程是什么线程,是哪个处理器执行该线程不存在限定。
74.本技术实施例就是将调频精细到了进程的具体时间段,针对进程中某个具体时间段对于计算时长影响最大的线程,也就是计算负载最高的第一关键线程,来针对性调整这个第一关键线程的执行处理器的频率,而不是笼统的所有线程的所有处理器一起调频,因此能够保证在满足计算效率的前提下,还能降低功耗。
75.在一种实现方式中,上述目标进程为屏幕画面的显示进程;第一关键线程为主逻辑线程或显示线程。
76.在一个例子中,第一时间段是显示进程较早的时间段,此时,第一关键线程为主逻辑线程。例如,结合图2,主逻辑线程是在整个显示进程中需要较早执行的线程,并且发现这第一时间段内,主要的运算压力(计算负载)都在主逻辑线程上,那么就把主逻辑线程作为了第一关键线程,并且在第一时间段内执行后续步骤,对主逻辑线程的执行处理器进行调频。
77.在另一个例子中,第一时间段是显示进程较晚的时间段,此时,第一关键线程为显示线程。例如,结合图2,显示线程是在整个显示进程中需要较晚执行的线程,并且发现这第一时间段内,主要的运算压力(计算负载)都在显示线程上,那么就把显示线程作为了第一关键线程,并且在第一时间段内执行后续步骤,对显示线程的执行处理器进行调频。
78.在另一种实现方式中,上述方法还包括:获取目标进程的多个关键线程,多个关键线程中每个关键线程的计算负载在目标进程的总计算负载中的占比均大于或等于预设阈值;多个关键线程的计算负载高于非关键线程的计算负载;根据多个关键线程,确定关键路径,关键路径将目标进程分为多个时间段,该多个时间段中包括第一时间段;将多个关键线程中在第一时间段内的计算负载最高的关键线程,确定为第一关键线程。
79.也就是说,在这种实现方式中给出了关键路径和第一关键线程怎么确定的方案,先对目标进程的所有线程进行筛选,筛选出多个关键线程来,然后根据这多个关键线程确定出关键路径,这个关键路径就会将整个目标进程的处理时长(例如一帧画面的整个显示进程的时长)切分成多个时间段。由于对于一个进程而言,几乎不会出现一个线程从始至终都在执行,而且一直是计算负载最大,因为这不符合进程的处理逻辑。所以对于一个进程而言,必然会出现不同时间段处于关键路径上的线程有变化的情况。
80.在一个例子中,上述根据多个关键线程,确定关键路径的步骤可以包括:根据多个关键线程之间的唤醒关系,确定关键路径。
81.也就是说,可以通过关键线程之间的唤醒关系,确定出关键路径,在关键路径切分出的多个时间段中,处于关键路径上的关键线程不同,执行唤醒的关键线程会在较早的时间段中处于关键路径上,被唤醒的对象(被唤醒的关键线程)会在较晚的时间段中处于关键路径上。
82.在另一个例子中,上述根据多个关键线程,确定关键路径的步骤可以包括:根据多个关键线程的计算负载的统计数据,进行分析,确定出计算负载最大的关键线程的切换路径,该切换路径即为上述关键路径。
83.需要说明的是,本技术主要针对的是关键路径相对固定的情景,例如上述显示进程,对于一个显示进程最复杂的运算是稳定集中在绘制阶段和送显阶段的。而在实际中,大多数进程都是有相对固定的关键路径的。也就是说,上述获取关键线程、确定关键路径,确定第一关键线程,不需要在每次执行s301之前都执行一遍。而对于关键路径会频繁发生变化的场景,则需要在执行s301之前先重新确定好关键路径和第一关键线程等。
84.s302、在第一时间段内,利用目标进程的剩余处理时长和/或剩余负载,确定第一处理器的目标频点。
85.在一种实现方式中,可以采用任务的util作为任务负载的衡量方式,也就是剩余处理时长和/或剩余负载用until表示。任务的util取决于一定时间窗口内某个任务的运行时长(也就是整个目标进程的总计算时长/计算负载)。由于不同处理器的算力不同,所以预计的运算时长也会有差异,所以可以将运行时长归一化到相同的处理器进行比较。
86.在一个例子中,将该运行时长归一化到算力最大的cpu的最高频点,即为该任务的util值可以所示为:task util = (running_time / window_size) (cur_freq / max_freq) cpu_max_capacity。在该式中,running_time为窗口内该任务的运行时长,window_size为窗口大小,cur_freq为任务执行时的当前频点,max_freq为该核的最大频点,cpu_max_capacity为核的算力,算力最大的cpu其cpu_max_capacity为1024。
87.s303、利用第一时间段内的任意调频时机,根据第一处理器的目标频点对第一处理器进行调频。
88.在一帧内,存在大量调频时机,如任务迁核,任务唤醒等,调频时机可能出现在关键路径的任意阶段的任何时间点。每次调频时机,都检查此时一帧的执行状态,衡量此时计算进度是否符合预期。若计算进度落后,则提频加快计算,若进度超前,则降频节省功耗。具体衡量的方式即为对此阶段处于关键路径上的任务的计算负载进行度量。由于关键路径和关键线程在如游戏等一类应用中相对固定,因此可以使用历史信息预测关键路径的每个阶段中,对应的关键线程的计算负载和计算时长。当调频时机到来时,检查当前阶段对应关键线程在本阶段已经完成的计算量和已经经过的时间,与本阶段的预计时长和预计计算量对比,即可得到剩余负载和剩余时长,通过剩余负载/剩余时长,即可得到应设的cpu频点,也就是目标频点,之后就可以在任意调频时机按照该目标频点进行提频或者降频了。
89.在一种实现方式中,步骤s303可以包括:在第一时间段内的任意调频时机,当第一处理器的目标频点大于或等于第一处理器的实际频点时,对第一处理器进行提频;或者,当第一处理器的目标频点小于第一处理器的实际频点时,对第一处理器进行降频。
90.在一个例子中,在每个调频时机,目标频点的确定可以包括:遍历可选频点(freq),找到满足“剩余时间》util (1/capacity) maxfreq/freq”的最小的freq,其中maxfreq为处理器最大频点;capacity为处理器算力。
91.图3所示方案,主要通过锁定在目标进程的一段时间段内对于计算时长影响最大的关键线程,然后针对该关键线程去确定目标频点和进行调频,从而实现了更加精细化的调频,该帧内针对特定处理器的精细调频方式相比于传统的帧间所有处理器的统一调频的方式,更能满足计算需求,且能降低功耗。
92.而对于非关键路径任务所处的处理器,考虑通过降频来减少功耗。由于任务处于非关键路径,其运行时长不影响帧长,只需要保证其在一帧内完成计算即可,因此可以根据剩余时长/剩余负载来降低频点。
93.在一种实现方式中,上述方法还包括:s304、在第一时间段内,对第三处理器进行降频,第三处理器为目标进程对应的处理器中除第一处理器之外的处理器。
94.在该实现方式中,对于其他关键线程和非关键线程的处理器都降频,使得功耗节省更充分。
95.应理解,第三处理器可以是第二处理器,因为在第一时间段内,第二处理器不是处在关键路径上的关键线程的处理器。
96.在另一种实现方式中,上述方法还包括:s305、将在目标进程的第二时间段内处于关键路径的第二关键线程的执行处理器确定为第二处理器。
97.第二关键线程在第二时间段内的计算负载高于其他关键线程在第二时间段内的计算负载,且高于非关键线程在第二时间段内的计算负载;第二时间段是根据关键路径得到的,第二时间段的起点为第一时间段的终点,或者,第二时间段的终点为第一时间段的起点。
98.也就是说,关键路径将目标进程分成的多个时间段中,对于不同的时间段,如果存在的处在关键路径上的关键线程不同,那么就针对不同时间段的不同的处在关键路径的关键线程进行调频。
99.在一种实现方式中,目标进程为屏幕画面的显示进程;当第二时间段的起点为第一时间段的终点时,第一关键线程为主逻辑线程,第二关键线程为显示线程;或者,当第二时间段的终点为第一时间段的起点时,第一关键线程为显示线程,第二关键线程为主逻辑线程。
100.也就是说,结合显示进程这一实际应用场景时,两个时间段和两个处于关键路径的关键线程是进程前期为主逻辑线程,进程后期为显示线程。
101.在一种实现方式中,上述方法还包括:获取目标进程的多个关键线程,多个关键线程中每个关键线程的计算负载在目标进程的总计算负载中的占比均大于或等于预设阈值;多个关键线程的计算负载高于非关键线程的计算负载;根据多个关键线程,确定关键路径,关键路径将目标进程分为多个时间段,多个时间段包括第一时间段和第二时间段;将多个关键线程中在第一时间段内的计算负载最高的关键线程,确定为第一关键线程;以及,将多个关键线程中在第二时间段内的计算负载最高的关键线程,确定为第二关键线程。
102.在这种实现方式中,主要给出了两个关于出关键路径的关键线程的确定方法,就是将不同时间段内的计算负载最高的关键线程确定为第一关键线程和第二关键线程。这就使得后续调频针对的都是计算负载最高的关键线程,也就是对于整个目标进程的计算时长影响最大的关键线程。有针对性锁定这样的关键线程和进行调频,使得调频相比于传统方案更加精细化,在满足时长要求的情况下还能减小功耗。
103.在一个例子中,上述根据多个关键线程,确定关键路径的步骤可以包括:根据多个关键线程之间的唤醒关系,确定关键路径。
104.通过唤醒关系来确定关键线程是充分利用了关键线程之间的依赖关系,而不考虑非关键线程之间的依赖关系则是侧重在了对于整个目标进程的计算时长影响较大的线程上,提高处理效率。
105.除了唤醒关系的方式之外,还可以通过对统计数据的分析来确定关键路径。
106.在另一个例子中,上述根据多个关键线程,确定关键路径的步骤可以包括:通过对目标进程的关键线程的统计数据的分析,确定关键路径。
107.s306、在第二时间段内,利用目标进程的剩余处理时长和/或剩余负载,确定第二处理器的目标频点。
108.具体内容可以参照步骤s302相关内容,只是执行的时间段不同,以及计算目标频点的对象不同。
109.s307、利用第二时间段内的任意调频时机,根据第二处理器的目标频点对第二处理器进行调频。
110.具体内容可以参照步骤s303相关介绍,只是调频时机所处时间段不同,调频对象不同。
111.在一种实现方式中,s307可以包括:在第二时间段内的任意调频时机,当第二处理器的目标频点大于或等于第二处理器的实际频点时,对第二处理器进行提频;或者,当第二处理器的目标频点小于第二处理器的实际频点时,对第二处理器进行降频。
112.在一种实现方式中,上述方法还包括:s308、在第二时间段内,对第四处理器进行降频,第四处理器为目标进程对应的处理器中除第二处理器之外的处理器。
113.应理解,第四处理器可能是第一处理器,因为在第二时间段内,第一处理器不再是处于关键路径上的关键线程的处理器了,所以对第一处理器进行降频并不会影响整体方案的效果,且能够进一步降低功耗。
114.为了便于理解,下面结合图4和图5分别说明通过统计数据的分析和唤醒关系的分析来确定关键路径的方法。图4是本技术实施例的一帧内的负载情况示意图。图4以游戏场景的一帧显示为例,如图4所示,可以看出,大部分计算负载集中于unitymain,unitygfx,unitymultirender三个线程。在实际的计算过程中,首先由逻辑线程完成逻辑计算,计算出需要在一帧内显示的内容,以及相关的材质,光影等信息;之后唤醒渲染线程,由渲染线程实施渲染。因此,可以明确的得知,一帧的关键路径为unitymain-》unitygfx,在一帧的前半
部分,由unitymain的进展决定时长,在一帧的后半部分,由unitygfx决定时长;基于unity引擎的游戏应用普遍具有类似的关键路径特征。
115.由此可知,在进行调频时,并不需要关注应用的每一个线程,只需要关注影响帧长的、在关键路径上的关键线程即可。控制关键路径上每个阶段的时长,即可保证完整的一帧在目标时长内完成。
116.除了通过分析的方法获得关键路径,还可以通过线程间的唤醒关系来捕捉关键路径。从渲染线程开始倒向识别,通过被唤醒者找到唤醒者,最后通过此唤醒链得到关键路径。
117.图5是本技术实施例的一帧内的负载情况的另一示意图。图5依然是以游戏场景中的一帧显示为例。从图5可以看出可以获得如下的关键路径和关键线程分析结果:一帧按照关键路径的切换时机被分为多个阶段,每个阶段对应一个关键线程,即此时处于关键路径的线程。以unity游戏为例,一帧分为两个阶段,阶段切换时间点为unitygfx被唤醒的时间点,第一个阶段关键线程为unitymain,时长为唤醒前时长,第二阶段关键线程为unitygfx,时长为唤醒后到帧结束的时长。
118.因此关键路径可以表示为:phase0对应unitymain,phase1对应unitygfx。也就是说,在一帧内,通过变量phase记录当前所处的阶段。在一帧开始时,记录phase为0;关键路径的每一次切换(下一阶段的关键线程被唤醒),将phase加一,直到一帧的计算结束。
119.图6是本技术实施例的一种调频架构示意图。
120.在传统方案的原始框架中,agpservice向游戏调度器(gamesched)下发游戏启动信号、目标帧率等信息;surfaceflinger向游戏调度器下发帧结束时间点、预备缓冲区(pendingbuffer)等信息;游戏调度器基于此信息向处理器下发频点,在此期间屏蔽能量感知调度器(energy aware scheduling,eas)的任何频点。
121.而在与之不同的本技术的方案中,如图6所示,游戏启动后,频点设置可能来源于游戏调度器或者eas,本技术的新增模块keypathsched通过拦截游戏调度器和eas二者下发的频点,然后进行统一的频点调整。keypathsched可以理解为关键线程管理器,用于执行本技术的上述确定目标频点等步骤。因此,keypathsched频点计算和下发的时刻包含原游戏调度器下发时刻以及所有eas频点下发时刻,不同于原始游戏调度器一帧只计算并下发一次频点,keypathsched可以在一帧内增加几十次频点调整机会。
122.也就是说,本技术是一种帧内调频的调整策略,而传统方案只有在一帧启动时下发一次频点,可以看成是一种帧间调频的调整策略。在本技术的帧内调频,可以包括判断帧内调频是否开启的步骤:在游戏调度器中配置开关,只有当开关开启才会进行帧内调频,否则按照原始调频策略下发游戏调度器及eas频点。本技术的调频过程中,目标频点的计算包括:通过参数计算是否需要调整频点,也就是是否需要调频,以及调整的幅度,也就是具体降频或提频的数值。
123.keypathsched在模块内部,可以进行关键路径追踪和处在关键路径上的关键线程的识别,得到一帧内的phase信息及处于关键路径上的关键线程,并据此进行调频。
124.图7是本技术实施例的调频方案的时序图的示意图。如图7所示,gamesche表示的是游戏调度器在每帧启动时下发的频点,eas表示在每帧内部的一些下发频点。keypathsched拦截游戏调度器的频点与eas频点,之后,将游戏调度器下发的频点正常下
发;eas频点则按本技术方案执行的调频策略下发,也就是eas频点被屏蔽或者调整后下发。图7所示的phase0和phase1即为关键路径的状态标识,可以看出在图7所示的两帧周期中,在每帧周期内,在phase0时段内下发的频点和在phase1时段内下发频点的时机并不同,而在两帧之间,同样的phase0时段内的频点下发的时机也是不同的。如果是传统方案,在图7中不存在keypathsched模块,下发的频点只有每帧启动时的gamesche,而不是图7所示的一帧内还会有不固定的频点下发。
125.上文主要结合附图对本技术实施例的方法进行了介绍。应理解,虽然如上所述的各实施例所涉及的流程图中的各个步骤依次显示,但是这些步骤并不是必然按照图中所示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。下面结合附图对本技术实施例的装置进行介绍。
126.图8是本技术实施例的一种调频装置的示意图。如图8所示,该装置1000包括锁定单元1001和调频单元1002。该装置1000可以为任意一种具有多个处理器的电子设备,或者是集成在上述具有多个处理器的电子设备中。该电子设备可以是手机、笔记本电脑、平板电脑、车载终端等终端设备,也可以是电脑、服务器、云端设备等其他计算机设备。
127.该装置1000能够用于执行上文任意一种调频方法。例如,锁定单元1001可用于执行步骤s301,调频单元1002可用于执行步骤s302和s303。又例如,调频单元1002可用于执行步骤s304。又例如,锁定单元1001可用于执行步骤s305,调频单元1002可用于执行步骤s306-s308。
128.在一种实现方式中,装置1000还可以包括存储单元,用于存储各数据。该存储单元可以是集成在锁定单元1001或调频单元1002中,也可以是独立的单元。
129.图9是本技术实施例的一种电子设备的硬件结构示意图。如图9所示,该电子设备2000包括:至少一个处理器2001(图9中仅示出一个)处理器、存储器2002以及存储在所述存储器2002中并可在所述至少一个处理器2001上运行的计算机程序2003,所述处理器2001执行所述计算机程序2003时实现上述任意一种方法中的步骤。
130.本领域技术人员可以理解,图9仅仅是电子设备的举例,并不构成对电子设备限定,实际中电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
131.处理器2001可以是中央处理单元(central processing unit,cpu),其他通用处理器、数字信号处理器 (digital signal processor,dsp)、专用集成电路 (application specific integrated circuit,asic)、现成可编程门阵列 (field-programmable gate array,fpga) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
132.存储器2002在一些实施例中可以是电子设备2000的内部存储单元,例如电子设备2000的硬盘或内存。存储器2002在另一些实施例中也可以是电子设备2000的外部存储设备,例如电子设备2000上配备的插接式硬盘,智能存储卡(smart media card, smc),安全
数字(secure digital, sd)卡,闪存卡(flash card)等。可选地,存储器2002还可以既包括电子设备2000的内部存储单元也包括外部存储设备。存储器2002用于存储操作系统、应用程序、引导装载程序、数据以及其他程序等,例如所述计算机程序的程序代码等。存储器2002还可以用于暂时地存储已经输出或者将要输出的数据。
133.需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本技术方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
134.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
135.本技术实施例还提供了一种电子设备,该电子设备包括:至少一个处理器、存储器以及存储在所述存储器中并可在所述至少一个处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述各个方法实施例中的步骤。
136.本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,当计算机程序被处理器执行时能够实现上述各个方法实施例中的步骤。
137.本技术实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序,当计算机程序被处理器执行时能够实现上述各个方法实施例中的步骤。
138.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/电子设备的任何实体或装置、记录介质、计算机存储器、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、电载波信号、电信信号以及软件分发介质。例如u盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
139.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
140.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出
本技术的范围。
141.在本技术所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
142.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
143.应当理解,当在本技术说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
144.还应当理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
145.如在本技术说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0146]
另外,在本技术说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0147]
在本技术说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
[0148]
以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。

技术特征:
1.一种调频方法,其特征在于,所述方法包括:将在目标进程的第一时间段内处于所述目标进程的关键路径的第一关键线程的执行处理器确定为第一处理器;所述第一关键线程在所述第一时间段内的计算负载高于其他关键线程在所述第一时间段内的计算负载,且高于非关键线程在所述第一时间段内的计算负载;所述第一时间段是根据所述关键路径得到的;在所述第一时间段内,利用所述目标进程的剩余处理时长和/或剩余负载,确定所述第一处理器的目标频点;利用所述第一时间段内的任意调频时机,根据所述第一处理器的目标频点对所述第一处理器进行调频。2.根据权利要求1所述的方法,其特征在于,所述利用所述第一时间段内的任意调频时机,根据所述第一处理器的目标频点对所述第一处理器进行调频,包括:在所述第一时间段内的任意调频时机,当所述第一处理器的目标频点大于或等于所述第一处理器的实际频点时,对所述第一处理器进行提频;或者,当所述第一处理器的目标频点小于所述第一处理器的实际频点时,对所述第一处理器进行降频。3.根据权利要求1所述的方法,其特征在于,所述目标进程为屏幕画面的显示进程;所述第一关键线程为主逻辑线程或显示线程。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述第一时间段内,对第三处理器进行降频,所述第三处理器为所述目标进程对应的处理器中除所述第一处理器之外的处理器。5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:获取所述目标进程的多个关键线程,所述多个关键线程中每个关键线程的计算负载在所述目标进程的总计算负载中的占比均大于或等于预设阈值;所述多个关键线程的计算负载高于非关键线程的计算负载;根据所述多个关键线程,确定所述关键路径,所述关键路径将所述目标进程分为多个时间段,所述多个时间段包括所述第一时间段;将所述多个关键线程中在所述第一时间段内的计算负载最高的关键线程,确定为所述第一关键线程。6.根据权利要求5所述的方法,其特征在于,所述根据所述多个关键线程,确定所述关键路径,包括:根据所述多个关键线程之间的唤醒关系,确定所述关键路径。7.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:将在所述目标进程的第二时间段内处于所述关键路径的第二关键线程的执行处理器确定为第二处理器;所述第二关键线程在所述第二时间段内的计算负载高于其他关键线程在所述第二时间段内的计算负载,且高于非关键线程在所述第二时间段内的计算负载;所述第二时间段是根据所述关键路径得到的,所述第二时间段的起点为所述第一时间段的终点,或者,所述第二时间段的终点为所述第一时间段的起点;在所述第二时间段内,利用所述目标进程的剩余处理时长和/或剩余负载,确定所述第
二处理器的目标频点;利用所述第二时间段内的任意调频时机,根据所述第二处理器的目标频点对所述第二处理器进行调频。8.根据权利要求7所述的方法,其特征在于,所述利用所述第二时间段内的任意调频时机,根据所述第二处理器的目标频点,对所述第二处理器进程调频,包括:在所述第二时间段内的任意调频时机,当所述第二处理器的目标频点大于或等于所述第二处理器的实际频点时,对所述第二处理器进行提频;或者,当所述第二处理器的目标频点小于所述第二处理器的实际频点时,对所述第二处理器进行降频。9.根据权利要求7所述的方法,其特征在于,所述目标进程为屏幕画面的显示进程;当所述第二时间段的起点为所述第一时间段的终点时,所述第一关键线程为主逻辑线程,所述第二关键线程为显示线程;或者,当所述第二时间段的终点为所述第一时间段的起点时,所述第一关键线程为显示线程,所述第二关键线程为主逻辑线程。10.根据权利要求7所述的方法,其特征在于,所述方法还包括:在所述第二时间段内,对第四处理器进行降频,所述第四处理器为所述目标进程对应的处理器中除所述第二处理器之外的处理器。11.根据权利要求7所述的方法,其特征在于,所述方法还包括:获取所述目标进程的多个关键线程,所述多个关键线程中每个关键线程的计算负载在所述目标进程的总计算负载中的占比均大于或等于预设阈值;所述多个关键线程的计算负载高于非关键线程的计算负载;根据所述多个关键线程,确定所述关键路径,所述关键路径将所述目标进程分为多个时间段,所述多个时间段包括所述第一时间段和所述第二时间段;将所述多个关键线程中在所述第一时间段内的计算负载最高的关键线程,确定为所述第一关键线程;以及,将所述多个关键线程中在所述第二时间段内的计算负载最高的关键线程,确定为所述第二关键线程。12.一种调频装置,其特征在于,包括:锁定单元,用于将在目标进程的第一时间段内处于所述目标进程的关键路径的第一关键线程的执行处理器确定为第一处理器;所述第一关键线程在所述第一时间段内的计算负载高于其他关键线程在所述第一时间段内的计算负载,且高于非关键线程在所述第一时间段内的计算负载;所述第一时间段是根据所述关键路径得到的;调频单元,用于:在所述第一时间段内,利用所述目标进程的剩余处理时长和/或剩余负载,确定所述第一处理器的目标频点;利用所述第一时间段内的任意调频时机,根据所述第一处理器的目标频点对所述第一处理器进行调频。13.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,使得所述电子设备实现如权利要求1至11中任一项所述的方法。
14.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被电子设备执行时实现如权利要求1至11中任一项所述的方法。

技术总结
本申请提供一种调频方法和调频装置,该方法包括:将在目标进程的第一时间段内处于目标进程的关键路径的第一关键线程的执行处理器确定为第一处理器;第一关键线程在第一时间段内的计算负载在第一时间段内最高;在第一时间段内,利用目标进程的剩余处理时长和/或剩余负载,确定第一处理器的目标频点;利用第一时间段内的任意调频时机,根据第一处理器的目标频点对第一处理器进行调频。该方案通过锁定在目标进程的一段时间段内对于计算时长影响最大的关键线程,然后针对该关键线程调频,实现了更加精细化的调频,该帧内针对特定处理器的精细调频方式相比于传统的帧间所有处理器的统一调频的方式,更能满足计算需求,且能降低功耗。功耗。功耗。


技术研发人员:郭怡欣 任玉林
受保护的技术使用者:荣耀终端有限公司
技术研发日:2023.06.05
技术公布日:2023/7/12
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐