CN114911336B - 调整频率的方法、装置、电子设备及可读存储介质 - Google Patents

调整频率的方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN114911336B
CN114911336B CN202210402879.7A CN202210402879A CN114911336B CN 114911336 B CN114911336 B CN 114911336B CN 202210402879 A CN202210402879 A CN 202210402879A CN 114911336 B CN114911336 B CN 114911336B
Authority
CN
China
Prior art keywords
frame
frequency value
image frame
processor
thread
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
CN202210402879.7A
Other languages
English (en)
Other versions
CN114911336A (zh
Inventor
姜仕双
刘文方
李耀宗
梁绪庆
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.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
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 Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202310358482.7A priority Critical patent/CN116774809A/zh
Publication of CN114911336A publication Critical patent/CN114911336A/zh
Application granted granted Critical
Publication of CN114911336B publication Critical patent/CN114911336B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/16Constructional details or arrangements
    • G06F1/20Cooling means
    • G06F1/206Cooling means comprising thermal management
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Power Sources (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

本申请公开了一种调整频率的方法、装置、电子设备及可读存储介质,属于终端技术领域。包括:绘制第一图像帧,其中,在绘制第一图像帧时电子设备的处理器的运行频率为第一频率值。若第一图像帧是空白帧,则确定第二频率值,第二频率值小于第一频率值,空白帧是指未输出图像数据的图像帧。将处理器的运行频率调整为第二频率值。本申请通过识别空白帧,调整处理器的运行频率至一个较低的频点,可以更好的平衡性能和功耗,避免电子设备出现性能过剩、功耗浪费的问题。

Description

调整频率的方法、装置、电子设备及可读存储介质
本申请要求于2022年03月17日提交到国家知识产权局、申请号为202210267048.3、申请名称为“频率预测的方法、装置、电子设备及可读存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及终端技术领域,特别涉及一种调整频率的方法、装置、电子设备及可读存储介质。
背景技术
诸如手机、平板电脑之类的电子设备在运行时,特别是在运行视频、导航、电子书、音乐、购物以及游戏等应用程序的场景下,复杂的交互场景给如何平衡性能和功耗带来了巨大的挑战。
在相关技术中,为了平衡性能和功耗,通常采用面向应用程序或场景级别的限频策略来解决资源分配问题,然而,如此常会遇到性能过剩、功耗浪费的问题,从而导致电子设备因高能耗而引起发热、续航能力下降。
发明内容
本申请提供了一种调整频率的方法、装置、电子设备及可读存储介质,可以解决相关技术中无法平衡性能和功耗,导致电子设备因高能耗而引起发热、续航能力下降的问题。所述技术方案如下:
第一方面,提供了一种调整频率的方法,应用于电子设备中,所述方法包括:
绘制第一图像帧,其中,在绘制所述第一图像帧时所述电子设备的处理器的运行频率为第一频率值;
若所述第一图像帧是空白帧,则确定第二频率值,所述第二频率值小于所述第一频率值,所述空白帧是指未输出图像数据的图像帧;
将所述处理器的运行频率调整为所述第二频率值。
如此,在绘帧过程中,通过识别空白帧,调整处理器的运行频率值至一个较低的频点,可以更好的平衡性能和功耗,解决了用户交互场景非必要提频导致的性能过剩、功耗浪费问题。
作为本申请的一个示例,所述若所述第一图像帧是空白帧,则确定第二频率值,包括:
若所述第一图像帧是所述空白帧,则获取目标频率值,所述目标频率值小于上一个非空白帧的绘帧任务中所述处理器的最大频率值;
将所述处理器的最大频率值调整为所述目标频率值;
根据调整后的所述处理器的最大频率值,确定所述第二频率值。
如此,通过识别空白帧,调整处理器的最大频率值至一个较低的频点,以限制处理器的运行频率,可以较好的平衡性能和功耗,解决了用户交互场景非必要提频导致的性能过剩、功耗浪费问题。
作为本申请的一个示例,若所述第一图像帧是空白帧,则确定第二频率值之前,还包括:
在绘帧所述第一图像帧的过程中,根据多个关键线程的运行情况,确定所述第一图像帧是否是所述空白帧,所述多个关键线程中的每个关键线程用于执行绘帧任务。
如此,通过对多个关键线程的运行情况进行监控,可以有效地识别出第一图像帧是否是空白帧,从而便于确定是否要对处理器的最大频率值进行调整。
作为本申请的一个示例,所述多个关键线程包括主线程和渲染线程;所述在绘帧所述第一图像帧的过程中,根据多个关键线程的运行情况,确定所述第一图像帧是否是所述空白帧,包括:
在绘帧所述第一图像帧的过程中,若所述主线程未调用所述渲染线程,则确定所述第一图像帧是所述空白帧;或者,
在绘帧所述第一图像帧的过程中,若所述主线程调用所述渲染线程后,所述渲染线程未绘制渲染数据,则确定所述第一图像帧是所述空白帧。
如此,通过对主线程和渲染线程的运行情况的监测结果,判断第一图像帧是否是空白帧,可以保证识别的有效性。
作为本申请的一个示例,所述电子设备包括第一帧模块和消息中心处理模块;所述方法还包括:
在绘帧所述第一图像帧的过程中,若所述主线程运行过程中调用所述第一帧模块内的第一插装代码,则所述第一帧模块向所述消息中心处理模块发送第一桩点信息,所述第一桩点信息用于指示所述第一插装代码在所述第一帧模块中的插入位置;
所述消息中心处理模块接收所述第一桩点信息后,确定所述主线程未调用所述渲染线程。
如此,通过在第一帧模块中插入桩点,可以使得电子设备利用第一插装代码来识别出有UI THREAD无RENDER THREAD的空白帧,从而实现空白帧的识别。
作为本申请的一个示例,所述电子设备包括第二帧模块和消息中心处理模块;所述方法还包括:
在绘帧所述第一图像帧的过程中,若在所述主线程调用所述渲染线程后,所述渲染线程运行过程中调用所述第二帧模块内的第二插装代码,则所述第二帧模块向所述消息中心处理模块发送第二桩点信息,所述第二桩点信息用于指示所述第二插装代码在所述第二帧模块中的插入位置;
所述消息中心处理模块接收所述第二桩点信息后,确定所述渲染线程未绘制所述渲染数据。
如此,通过在第二帧模块中插入桩点,可以使得电子设备利用第二插装代码来识别出有UI THREAD和RENDER THREAD,但无queuebuffer的空白帧,从而实现空白帧的识别。
作为本申请的一个示例,所述处理器包括多个核,所述多个核中的每个核对应有不同的目标频率值;
所述若所述第一图像帧是所述空白帧,则获取目标频率值,包括:
若所述第一图像帧是所述空白帧,则分别获取所述多个核中的每个目标核对应的目标频率值,所述目标核是所述多个核中运行有用于执行绘帧任务的关键线程的核;
所述将所述处理器的最大频率值调整为所述目标频率值,包括:
分别将所述每个目标核的最大频率值调整为所述每个目标核对应的目标频率值。
如此,当处理器包括多个核的情况下,通过对每个运行有关键线程的目标核的最大频率值进行限制,以降低每个核的运行功耗,从而有效地解决了性能过剩、功耗浪费的问题。
作为本申请的一个示例,所述方法还包括:
在所述第一图像帧是所述空白帧的情况下,若所述第一图像帧的上一帧是非空白帧,则取消定时器计时功能,其中,所述定时器计时功能用于在所述上一帧的绘帧任务结束后计时达到预设时长的情况下提高所述处理器的最大频率值。
如此,通过取消定时器BOOST机制,就不会在空白帧对应的绘制时间窗口内有绘帧超时的判断结果,从而也就不会导致自动提频的问题。
作为本申请的一个示例,所述方法还包括:
在所述第一图像帧是所述空白帧的情况下,降低所述多个关键线程中的至少一个关键线程的运行优先级。
如此,通过降低多个关键线程中的部分或者全部关键线程的运行优先级,以使得其他线程能够优先使用资源,从而可以提高其他功能的完成效率。
第二方面,提供了一种调整频率的装置,配置于电子设备中,所述装置包括:
绘制模块,用于绘制第一图像帧,其中,在绘制所述第一图像帧时所述电子设备的处理器的运行频率为第一频率值;
资源控制模块,用于若所述第一图像帧是空白帧,则确定第二频率值,所述第二频率值小于所述第一频率值,所述空白帧是指未输出图像数据的图像帧;
所述资源控制模块,还用于将所述处理器的运行频率调整为所述第二频率值。
作为本申请的一个示例,所述资源控制模块用于:
若所述第一图像帧是所述空白帧,则获取目标频率值,所述目标频率值小于上一个非空白帧的绘帧任务中所述处理器的最大频率值;
将所述处理器的最大频率值调整为所述目标频率值;
根据调整后的所述处理器的最大频率值,确定所述第二频率值。
作为本申请的一个示例,所述装置还包括帧模型,所述帧模型用于:
在绘帧所述第一图像帧的过程中,根据多个关键线程的运行情况,确定所述第一图像帧是否是所述空白帧,所述多个关键线程中的每个关键线程用于执行绘帧任务。
作为本申请的一个示例,所述多个关键线程包括主线程和渲染线程;所述帧模型用于:
在绘帧所述第一图像帧的过程中,若所述主线程未调用所述渲染线程,则确定所述第一图像帧是所述空白帧;或者,
在绘帧所述第一图像帧的过程中,若所述主线程调用所述渲染线程后,所述渲染线程未绘制渲染数据,则确定所述第一图像帧是所述空白帧。
作为本申请的一个示例,所述电子设备包括第一帧模块和消息中心处理模块;
在绘帧所述第一图像帧的过程中,若所述主线程运行过程中调用所述第一帧模块内的第一插装代码,则所述第一帧模块向所述消息中心处理模块发送第一桩点信息,所述第一桩点信息用于指示所述第一插装代码在所述第一帧模块中的插入位置;
所述消息中心处理模块接收所述第一桩点信息后,确定所述主线程未调用所述渲染线程。
作为本申请的一个示例,所述电子设备包括第二帧模块和消息中心处理模块;
在绘帧所述第一图像帧的过程中,若在所述主线程调用所述渲染线程后,所述渲染线程运行过程中调用所述第二帧模块内的第二插装代码,则所述第二帧模块向所述消息中心处理模块发送第二桩点信息,所述第二桩点信息用于指示所述第二插装代码在所述第二帧模块中的插入位置;
所述消息中心处理模块接收所述第二桩点信息后,确定所述渲染线程未绘制所述渲染数据。
作为本申请的一个示例,所述处理器包括多个核,所述多个核中的每个核对应有不同的目标频率值;所述资源控制模块用于:
若所述第一图像帧是所述空白帧,则分别获取所述多个核中的每个目标核对应的目标频率值,所述目标核是所述多个核中运行有用于执行绘帧任务的关键线程的核;
所述将所述处理器的最大频率值调整为所述目标频率值,包括:
分别将所述每个目标核的最大频率值调整为所述每个目标核对应的目标频率值。
作为本申请的一个示例,所述资源控制模块还用于:
在所述第一图像帧是所述空白帧的情况下,若所述第一图像帧的上一帧是非空白帧,则取消定时器计时功能,其中,所述定时器计时功能用于在所述上一帧的绘帧任务结束后计时达到预设时长的情况下提高所述处理器的最大频率值。
作为本申请的一个示例,所述资源控制模块还用于:
在所述第一图像帧是所述空白帧的情况下,降低所述多个关键线程中的至少一个关键线程的运行优先级。
第三方面,提供了一种电子设备,所述电子设备的结构中包括处理器和存储器,所述存储器用于存储支持电子设备执行上述第一方面所提供的方法的程序,以及存储用于实现上述第一方面所述的方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述电子设备还可以包括通信总线,所述通信总线用于在所述处理器与所述存储器之间建立连接。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与上述第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
附图说明
图1是根据一示例性实施例示出的一种绘帧任务中涉及的线程分布示意图;
图2是根据一示例性实施例示出的一种绘帧任务中帧超时的示意图;
图3是根据一示例性实施例示出的一种帧类型的示意图;
图4是根据一示例性实施例示出的一种在空白帧的绘制时间窗口内启动定时器机制的示意图;
图5是根据一示例性实施例示出的一种电子设备的结构示意图;
图6是根据一示例性实施例示出的一种电子设备的软件架构示意图;
图7是根据一示例性实施例示出的一种应用场景的示意图;
图8是根据一示例性实施例示出的一种调整频率的方法流程示意图;
图9是根据一示例性实施例示出的一种绘制周期的示意图;
图10是根据一示例性实施例示出的一种绘帧的状态示意图;
图11是根据一示例性实施例示出的一种空白帧的示意图;
图12是根据另一示例性实施例示出的一种空白帧的示意图;
图13是根据一示例性实施例示出的一种空白帧处理前后的对比示意图;
图14是根据另一示例性实施例示出的一种调整频率的方法流程示意图;
图15是根据另一示例性实施例示出的一种调整频率的方法流程示意图;
图16是根据另一示例性实施例示出的一种调整频率的方法流程示意图;
图17是根据一示例性实施例示出的一种调整频率的装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
应当理解的是,本申请提及的“多个”是指两个或两个以上。在本申请的描述中,除非另有说明,“/”表示或的意思,比如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,比如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
应用程序在绘制一个图像帧时,一般是通过多个关键线程配合实现。示例性地,多个关键线程主要包括主线程(譬如UI THREAD)和渲染线程(RENDER THREAD)。进一步地,多个关键线程还可以包括协同主线程和渲染线程进行帧绘制的一个或者多个其他线程。
在一个示例中,在帧绘制过程中先运行主线程,主线程主要负责处理与用户图形(User Interface,UI)相关的事件。主线程拉起渲染线程,渲染线程负责执行帧绘制操作,得到渲染数据,譬如请参考图1,每到来一帧数据后,应用程序都会通过主线程、渲染线程以及其他辅助的线程对其进行帧绘制。在得到渲染数据后,渲染线程通过queuebuffer,将得到的渲染数据存入缓冲区队列(BufferQueue)中,并通知SF(surfaceflinger)进程从BufferQueue中读取渲染数据,以便于将该渲染数据显示于显示屏上,从而完成图像帧的显示。其中,queuebuffer是一个函数,用于将渲染数据填充至BufferQueue中;SF进程用于与硬件协调将渲染数据显示于显示屏上,作为示例而非限定,该硬件包括图形处理器(graphics processing unit,GPU)。
上述的帧绘制过程通常是指对非空白帧的绘制。在一些情况下,待绘制的图像帧可能是空白帧,空白帧是指没有绘制画面的图像帧,或者说不会输出图像数据的图像帧。根据帧绘制过程中多个关键线程的运行情况,可以将空白帧分为两种:一种是主线程运行但未拉起渲染线程,也即在帧绘制过程中,有UI THREAD无RENDER THREAD;另一种是主线程运行,并拉起渲染线程,但渲染线程运行后未执行帧绘制操作,也即在帧绘制过程中,有UITHREAD和RENDER THREAD,但无queuebuffer。在软刷方案中,应用程序可能间隔性地绘制空白帧,也即每隔一个非空白帧存在一个空白帧;也可能连续的绘制多个空白帧,譬如在连续绘制多个非空白帧后,又连续绘制多个空白帧,譬如请参考图2,在第三个图像帧之后的多个图像帧均为空白帧,此时屏幕刷新后显示的仍是上一个有画面的图像帧。
存在空白帧的原因在于,通常情况下,电子设备自身存在屏幕刷新率。示例性的,屏幕刷新率可以指屏幕每秒刷新显示图像的次数譬如为120帧/秒,既屏幕在1秒内可以刷新120次。一般当屏幕刷新时会发送一个信号给系统,系统在接收到该信号后会向前台运行的应用程序发送同步信号(如Vsync信号),以触发该应用程序执行一次帧绘制操作,不难理解,在该种情况下,应用程序的绘帧频率(简称:帧率)与电子设备的屏幕刷新率相同。然而在一些场景中,为了避免高功耗,应用程序的帧率会被调整为低帧率,为了使得绘帧操作与屏幕刷新操作保持一致以避免出现画面撕裂的现象,应用程序会不绘制一些图像帧,这些图像帧即为空白帧。
在一种可能的情况下,应用程序的低帧率可以由系统进行调节,譬如屏幕刷新率为120帧/秒,系统可以调整应用程序的帧率为60帧/秒(也即软件刷新率约为16.6毫秒)。在一个示例中,屏幕产生一个Vsync信号后,系统将一个图像帧送显,应用程序根据Vsync信号绘制一个图像帧,并存入BufferQueue中。屏幕产生下一个Vsync信号后,系统将下一个图像帧送显,但应用程序不绘制图像帧。屏幕产生再下一个Vsync信号后,系统将再下一个图像帧送显,并存入BufferQueue中,且应用程序根据Vsync信号绘制一个图像帧。也即是,应用程序可以间隔进行绘制,比如绘制一帧,然后空白一帧,再绘制一帧,再空白一帧,也即空白帧会间隔性的出现。
在另一种可能的情况下,应用程序的低帧率也可以有应用程序自己进行优化,也即应用程序自身设有帧绘制的方案,譬如可以由应用程序的开发商在应用程序中预先进行配置,在一个示例中,应用程序可能在一段时间内连续绘制多个非空白帧,在之后的一段时间内连续绘制多个空白帧。
在一些场景中,可能会因为一些突发负载比如输入输出(input/output,IO)操作、绘制逻辑复杂等导致绘制时间超过预期(譬如超过16.6毫秒),譬如如图3所示,图3是根据一示例性实施例示出的一种绘帧超时现象的示意图。作为一个示例,针对此场景,为了能够保证图像帧的及时绘制、避免出现丢帧等现象,希望在下一帧数据达到之前提高处理器的频率,以加快处理器的任务执行速度,从而期望能够在下一个图像帧的绘帧任务开始之前完成当前图像帧的绘帧任务。为此,电子设备中可以设置自动提频功能。具体地,请参考图4,电子设备中可以设置一个BOOST机制(譬如可以是定时器BOOST机制),在检测到一个图像帧的绘制结束标识后,如果在经过一定时长(譬如16.6毫秒)后没有检测到下一个绘制结束标识,则认为可能是由于绘制任务超时导致的,此时就可以执行自动提频的操作,也即提高处理器的频率。
在一种可能的情况下,如果到来的图像帧是空白帧,则由于空白帧不需要绘制,所以空白帧没有绘制结束标识,而因BOOST机制的存在使得再经过一定时长(譬如16.6毫秒)后电子设备自动执行提频操作,也即在空白帧到来后的绘制时间窗口内提高处理器的频率,如此会导致出现功耗浪费的问题。譬如假设第一帧为非空白帧,第二帧为空白帧,第三帧为非空白帧,则在检测到第一帧的绘制结束标识后,再经过16.6毫秒,由于第二帧是空白帧,所以检测不到绘制结束标识,电子设备会确认为绘制超时,从而就会自动进行提频,进而导致资源浪费。
针对该种情况,可以在绘帧过程中识别每一个图像帧的类型,从而按照每一个图像帧所需的资源设定处理器的频率供给策略,以达到性能和功耗的平衡。
本申请实施例提供的方法可以由电子设备执行,电子设备中可以安装有诸如视频、导航、电子书、音乐、购物以及游戏之类的应用程序。作为示例而非限定,电子设备可以是但不限于手机运动相机(GoPro)、数码相机、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、车载设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmentedreality,AR)\虚拟现实(virtual reality,VR)设备、手机等,本申请实施例对此不作限定。
请参考图5,图5是本申请实施例提供的一种电子设备的结构示意图。参见图5,电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中,传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,比如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,GPU,图像信号处理器(image signalprocessor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signalprocessor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从该存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口,如可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。比如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。比如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,比如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,比如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,比如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口120可以用于连接外部存储卡,比如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。比如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,计算机可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,来执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100在使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,比如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D以及应用处理器等实现音频功能,比如音乐播放,录音等。
接下来对电子设备100的软件系统予以说明。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的安卓(Android)系统为例,对电子设备100的软件系统进行示例性说明。
图6是本申请实施例提供的一种电子设备100的软件系统的框图。参见图6,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为五层,从上至下分别为应用程序(application,APP)层,应用程序框架层(application FrameWork,AFW),安卓运行时(Android runtime)和系统层,内核层以及硬件层。
应用程序层可以包括一系列应用程序包。如图6所示,应用程序包可以包括电子书,导航,视频,网络购物,游戏,即时通讯,相机,图库,通话等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。如图6所示,应用程序框架层可以包括帧模型,窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
帧模型用于供应用程序调用,以实现图像帧的绘制和显示。作为本申请的一个示例,帧模型中包括第一帧模块、第二帧模块、第三帧模块、SF模块。作为本申请的一个示例,电子设备可以分别在第一帧模块、第二帧模块中增加帧类别监测功能,从而通过该功能识别出空白帧。在识别出图像帧是空白帧的情况下,帧模型通知底层的消息中心处理模块,以便于消息中心处理模块作进一步地处理。在一个示例中,第一帧模块又可以称为Choreographer模块,第二帧模块又可以称为Hwui模块。第三帧模块是用于执行与帧绘制相关的操作的模块,第三帧模块的数量可能是一个或者多个,示例性地,在待绘制的图像帧不是空白帧的情况下,应用程序会调用第三帧模块来实现帧绘制。SF模块运行于SF进程中,SF模块用于与硬件(譬如GPU)协调将应用程序绘制出的渲染数据显示于显示屏上。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问,这些数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。视图系统包括可视控件,比如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序的显示界面,显示界面可以由一个或多个视图组成,比如,包括显示短信通知图标的视图,包括显示文字的视图,以及包括显示图片的视图。电话管理器用于提供电子设备100的通信功能,比如通话状态的管理(包括接通,挂断等)。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如,通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或滚动条文本形式出现在系统顶部状态栏的通知,比如后台运行的应用程序的通知。通知管理器还可以是以对话窗口形式出现在屏幕上的通知,比如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块,比如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(比如:OpenGL ES),2D图形引擎(比如:SGL),代理模块等。表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,比如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。2D图形引擎是2D绘图的绘图引擎。代理模块用于接收帧模型下发的消息(譬如第一消息),并将所接收到消息传输给底层消息中心处理模块进行处理,不难理解,代理模块是帧模型与底层交互的桥梁,起到透传消息的作用。
内核层是硬件和软件之间的层。作为本申请的一个示例,内核层至少包含帧率调节模块、关键线程识别模块、消息中心处理模块、负载计算模块、资源控制模块。帧率调节模块可以用于计算应用程序运行的帧率,也可以将帧率与屏幕刷新率调整为同步。关键线程识别模块用于识别关键线程。消息中心处理模块用于在接收到应用程序框架层的帧模型发送的第一消息的情况下,确定当前图像帧是空白帧,其中第一消息用于指示当前图像帧是空白帧,并且,消息中心处理模块在确定当前图像帧是空白帧的情况下,通知负载计算模块。负载计算模块用于计算一次绘帧任务中多个关键线程在处理器中的负载情况,根据计算的负载确定在下一次绘帧任务中处理器的频率最大值(freq max)设置为多少较为合适,并将计算的信息发送给资源控制模块。资源控制模块用于根据负载计算模块确定的信息(也即频率最大值),调整处理器的运行频率,也即资源控制模块具有调频的功能。可选地,资源控制模块还可以用于调整多个关键线程的优先级、取消定时器BOOST机制等。进一步地,资源控制模块还可以用于选核,譬如可以根据各个关键线程的运行情况,选择将各个关键线程分别调度到哪个核上运行。
作为本申请的一个示例,硬件层中包括但不限于中央处理单元(CentralProcessing Unit,CPU)、GPU、双倍速率同步动态随机存储器(DDR SDRAM,Double DataRate Synchronous Dynamic Random Access Memory)。
在对本申请实施例提供的调整频率的方法进行介绍之前,先对本申请实施例涉及的应用场景进行简单介绍。假设电子设备是手机,请参考图7,图7是根据一示例性实施例示出的一种应用场景的示意图。该应用场景具体包括:
手机中运行有即时通讯应用,记为APP1。用户A通过手机中的APP1与用户B聊天。在一个示例中,请参考图7中的(a)图,手机在接收到用户B的消息a后,在APP1的聊天界面中显示消息a,用户A阅读消息a后,在聊天界面的消息输入框71中输入想对用户B说的话,也即消息b。响应于用户的操作,手机在消息输入框71中输入消息b。用户A输入结束后触发发送选项72,响应于用户A对发送选项72的触发操作,手机将用户A输入的消息b发送给用户B,并在手机的聊天界面中显示消息b,如图7中的(b)图所示。
需要说明的是,上述应用场景仅是示例性的,此外,本申请实施例提供的方法还可以应用于电子设备运行的其他场景,例如,其他场景包括但不限于购物、视频、直播、电子书、滑动列表,本申请实施例对此不作限定。
接下来,对本申请实施例提供的调整频率的方法进行介绍。请参考图8,图8是根据一示例性实施例示出的一种调整频率的方法流程示意图。作为示例而非限定,该方法可以应用于图5所示的电子设备中,该方法可以包括如下部分或者全部内容:
步骤801:确定历史绘帧任务中一个绘帧周期内多个关键线程在处理器上的负载。
多个关键线程是指应用程序依赖的多个线程中用于执行绘帧任务的线程。如前文所述,多个关键线程可以包括主线程(UI THREAD)、渲染线程(RENDER THREAD)以及协同主线程和渲染线程进行帧绘制的一个或者多个其他线程。为了便于描述和理解,在一些示例中,可以将其他线程记为线程A。
绘帧周期可以为第一绘帧任务的渲染线程结束时刻至第二绘帧任务的渲染线程结束时刻之间的时长。其中第一绘帧任务和第二绘帧任务是任意两个相邻的用于绘制非空白帧的绘帧任务。譬如请参考图9,假设第一绘帧任务在Vsync1信号的周期内,第二绘帧任务在Vsync3信号的周期内,则绘帧周期如图9中所标注的。
需要说明的是,两个非空白帧之间可能存在空白帧,也即是,第一绘帧任务的渲染线程与第二绘帧任务的渲染线程之间可能存在空白帧的渲染线程,但由于对空白帧的处理时间非常短,所以在确定绘帧周期时几乎可以忽略不计该空白帧的处理时间。
在一个示例中,用户点击视频应用程序后,电子设备启动视频应用程序,视频应用程序启动后播放短视频。在此过程中,视频应用程序通过多个关键线程进行帧绘制。根据前文所述可知,视频应用程序先运行主线程,通过主线程拉起渲染线程以执行帧绘制,作为示例而非限定,主线程可以通过执行TRAVERSAL事件拉起渲染线程,也即TRAVERSAL事件用于调用渲染线程。
其中,对每个图像帧的绘制对应为一次绘帧任务,历史绘制任务是指在当前时刻之前的一次绘帧任务,在一个示例中,历史绘制任务可以是指上一个非空白帧的绘帧任务。
在一个绘帧周期内,对于一个非空白帧的绘制,在该非空白帧到来后,主要由主线程和渲染线程合作完成帧的绘制。在实施中,应用程序先运行主线程,在主线程运行一段时长后,拉起渲染线程,渲染线程申请缓存,例如该缓存可以是BufferQueue,并进行图像帧的绘制操作,得到渲染数据。渲染线程将渲染数据存入BufferQueue中以供SF进程读取相关信息。由此可见,如图1所示,一个非空白帧的绘制主要涉及主线程和渲染线程。在完成一个图像帧的绘制的情况下,会在queueBuffer中存入一个结束标识,也即存在一个queueBuffer结束点。
由于在绘帧过程中,与用户交互相对贴近的逻辑点是渲染线程,当渲染线程执行完结束后,就可以通知SF进程读取当前图像帧对应的渲染数据,然后显示在界面上,故绘帧周期可以设置为上一绘帧任务的渲染线程的结束点到当前绘帧任务的渲染线程的结束点。可选地,请参考图9,渲染线程存在queueBuffer,此时绘帧周期可以是从一个queueBuffer结束点到下一个相邻的queueBuffer结束点。
在一个示例中,步骤801的执行时机是检测到上一个图像帧的queueBuffer结束点。也即是,为了能够确定下一个图像帧的绘制任务所需的资源,当电子设备检测到上一个图像帧的queueBuffer结束点时,计算上一个绘制任务的绘帧周期内多个关键线程在处理器上的负载。
多个关键线程在处理器上的负载可以是指多个关键线程中各个关键线程在处理器上的负载的总和。在一个示例中,各个关键线程在处理器上的负载可以包括各个关键线程在处理器上的运行时长,该种情况下,多个关键线程在处理器上的负载包括各个关键线程在处理器上的运行时长的总和。
示例性地,假设多个关键线程包括主线程、渲染线程和线程A,电子设备确定主线程在处理器上的运行时长为t1,渲染线程在处理器上的运行时长为t2,线程A在处理器上的运行时长为t3,则多个关键线程在处理器上的负载为t,其中t=t1+t2+t3。
需要说明的是,上述仅是以各个关键线程在处理器上的负载包括各个关键线程在处理器上的运行时长为例进行说明。在另一实施例中,负载还可能包括其他资源信息,本申请实施例对此不作具体限定。
另外,作为本申请的一个示例,电子设备中包括多个核,譬如多个核包括小核(譬如记为核0)、中核(譬如记为核1)以及大核(譬如记为核2)。此时,多个关键线程在处理器上的调度情况可能包括如下情况:
在一种可能的情况下,多个关键线程均运行于同一个核上。此时,可以按照上述方式确定多个关键线程在处理器上的负载,也即确定各个关键线程在处理器上的负载的总和。
在另一种可能的情况下,多个关键线程中的不同关键线程运行于不同的核上,譬如主线程运行于大核(也即核2)上,渲染线程运行于中核(也即核1)上,线程A运行于小核(也即核0)上。此时,在计算多个关键线程在处理器上的负载时,可以分别计算多个关键线程中的各个关键线程在各自所在的核上的负载。示例性地,计算主线程在大核上的负载,渲染线程在中核上的负载,以及线程A在小核上的负载。
在一个示例中,当一个核上运行有K(K大于1)个关键线程时,则该K个关键线程在该核上的负载为该K个关键线程中各个关键线程在该核上的负载的总和。譬如,假设主线程和渲染线程均被调度到大核上,则主线程和渲染线程在大核上的负载为主线程在大核上的负载与渲染线程在大核上的负载之和。
在一些实施例中,在检测到上一个绘帧任务的结束点之后,还可以启动定时器BOOST机制,以通过定时器BOOST机制解决因突发负载比如IO操作、绘制逻辑复杂等导致绘帧超时的问题。
当然需要说明的是,这里仅是以采用定时器BOOST机制解决绘帧超时问题为例进行说明,在另一实施例中,还可以采用其他BOOST机制解决绘帧超时问题,本申请实施例对此不作限定。
步骤802:根据所确定的负载,确定在当前图像帧的绘帧任务中处理器的最大频率值。
在一个示例中,当前图像帧的绘帧任务是指在统计负载的时机之后的一个绘帧任务。
处理器的频率值是指多个关键线程在处理器上运行时处理器的频率大小。最大频率值是指多个关键线程在处理器上运行时处理器可以达到的频率值的上限,也就是说,在设置了该最大频率值的情况下,处理器的运行频率不能超过该最大频率值。
在一个示例中,可以根据所确定的负载,通过查询目标关系表,确定当前图像帧的绘帧任务中处理器的最大频率值。其中,目标关系表中用于记载负载与最大频率值之间的对应关系。示例性地,目标关系表可以如表1所示:
表1
负载 最大频率值
Load 1 Freq max a
Load 2 Freq max b
Load 3 Freq max c
... ....
示例性地,电子设备中包括一个核,且经过上述过程确定多个关键线程在处理器上运行的负载是load1,通过查询目标关系表确定load1对应的关系值为Freq max a,从而可以确定在当前图像帧的绘帧任务中处理器的最大频率值为Freq max a。
需要说明的是,当前图像帧的绘帧任务中处理器的最大频率值可能大于上述历史绘帧任务中处理器的最大频率值,也可能小于上述历史绘帧任务中处理器的最大频率值,还可能等于上述历史绘帧任务中处理器的最大频率值。
在一个示例中,如果电子设备中包括多个核,若多个关键线程分别被调度到多个核上,则根据每个关键线程在其所在核上的运行的负载,确定每个核对应的最大频率值。示例性地,假设主线程运行在核2上,渲染线程运行在核1上,通过计算确定关键线程在核2上的负载为load2,渲染线程在核1上的负载为load3。电子设备通过查询目标关系表确定load2对应的关系值为Freq max b,以及load3对应的关系值为Freq max c,则可以确定在当前图像帧的绘帧任务中核2对应的最大频率值为Freq max b,以及核1对应的最大频率值为Freq max c。
在一个示例中,由负载计算模块确定在当前图像帧的绘帧任务中处理器的最大频率值,并且,负载计算模块在确定该最大频率值后,将该最大频率值发送给电子设备中的资源控制模块,如此,资源控制模块根据预置的策略调整处理器的运行频率。其中预置的策略可以根据需求进行设置,本申请实施例对此不作限定。
步骤803:判断当前图像帧是否为空白帧。
请参考图10,正如前文所述,由于在对图像帧进行绘制的过程中,除了非空白帧之外,还可能存在空白帧。所以为了平衡性能和功耗,在本申请实施例中,在绘制一个图像帧的过程中,电子设备还可以确定当前图像帧的类型。不难理解,当前图像帧的类型包括空白帧或非空白帧,也即当前图像帧可能是空白帧,也可能不是空白帧。
其中对于空白帧的判断,主要包括如下两种情况:
第一种情况:在绘制任务中主线程运行,渲染线程未运行。
譬如请参考图11,如果在绘制当前图像帧的过程中,应用程序仅运行主线程,但主线程没有执行TRAVERSAL事件,则说明主线程不会调用渲染线程,也就不会有渲染线程执行绘帧流程,从而也就不会产生渲染数据,该种情况下,可以确定当前图像帧是空白帧。
针对该第一种情况,为了能够识别出该种类型的空白帧,可以在帧模型中的Choreographer内插入一个桩点,这里记为桩点1。在该桩点1处添加第一插桩代码,第一插桩代码用于识别第一种类型的空白帧。其中Choreographer的主要作用是负责接收和处理应用程序的各种更新消息和回调,等到Vsync信号到来后统一进行处理。譬如,Choreographer在检测到Vsync信号到来后,执行一些与主线程的运行相关的事件,并在执行这些事件的过程中,监听事件的回调结果,当事件的回调结果显示主线程没有执行TRAVERSAL事件,此时确定当前图像帧是空白帧。如果确定当前图像帧是空白帧,Choreographer向内核层的消息中心处理模块发送第一消息,第一消息中包括用于指示桩点1的第一桩点信息,如此,消息中心处理模块即可确定当前图像帧为空白帧。
也即是,针对第一种类型的空白帧,可以采用无TRAVERSAL事件打桩的方式,以识别该种空白帧。在一些实施例中,第一种类型的空白帧可以称为空白帧NR。
第二种情况:在空白帧的绘制过程中,主线程运行,渲染线程运行,但不存在queueBuffer,也即不存在这个函数的调用。
譬如,请参考图12,如果在绘制当前图像帧的过程中,应用程序运行主线程,主线程拉起渲染线程,但渲染线程没有执行queueBuffer。通常情况下,渲染线程在绘制过程中会先执行draw()请求,以通过draw()请求绘制渲染数据,然后调用queueBuffer,以将渲染数据存入BufferQueue中。所以,在一种可能的情况下,如果第二帧模块中没有执行draw()请求,说明后续也就不会执行queueBuffer,如此也就不会产生渲染数据,该种情况下可以确定当前图像帧是空白帧。
针对第二种情况,为了能够识别出该类的空白帧,可以在帧模型中的Hwui内插入一个桩点,这里记为桩点2。在该桩点2处添加第二插桩代码,第二插桩代码用于识别第二种类型的空白帧。在实施中,如果电子设备执行了第二插桩代码,由帧模型中的Hwui向内核层的消息中心处理模块发送第一消息,第一消息中包括用于指示桩点2的第二桩点信息,如此,消息中心处理模块即可确定当前图像帧为空白帧。其中Hwui用于在主线程拉起渲染线程后执行draw()请求,以辅助渲染线程执行渲染过程,并监听draw()请求的结果,如果draw()请求的结果为失败,此时可以确定是空白帧。
也即是,针对第二种类型的空白帧,可以采用无draw()请求打桩的方式,以识别该种空白帧。在一些实施例中,第二种类型的空白帧可以称为空白帧NQ。
如果当前图像帧不是空白帧,则进入如下步骤804。否则,如果当前图像帧是空白帧,则进入如下步骤805。
步骤804:监测下一个queueBuffer结束点。
如果监测到下一个queueBuffer结束点,则返回步骤801,否则继续监测queueBuffer结束点。也就是说,如果当前图像帧不是空白帧,则监测是否到达新的queueBuffer结束点,如果到达,则说明一次绘帧任务结束,此时为了确定下一次绘帧任务对处理器的资源需求,确定当前绘帧任务的绘帧周期内多个关键线程在处理器上的负载。如果没有到达,则说明一次绘帧任务尚未结束,继续监测。
不难理解,在当前图像帧不是空白帧的情况下,电子设备的处理器最大频率值维持在步骤802中确认的最大频率值。
另外,如果当前图像帧不是空白帧,则当定时器BOOST机制的定时时长达到预置的时长时,电子设备执行提频操作,也即提高处理器的运行频率。也就是说,如果当前图像帧不是空白帧,当定时器BOOST机制的定时时长达到预置的时长时仍未监测到下一个queueBuffer结束点,则说明可能是由于绘制超时导致的,此时电子设备自动执行提频操作。
步骤805:将在当前绘帧任务中的处理器的最大频率值调整为目标频率值。
作为本申请的一个示例,目标频率值为预先设置的一个固定的频率值,通常是一个较小的频率值,也就是说,目标频率值通常是低于已设置的处理器的最大频率值。在一个实施例中,目标频率值可以是预先根据电子设备的系统的能效比曲线经过换算得到。
也就是说,如果当前图像帧是空白帧,则可以降低处理器的最大频率值,以对处理器进行压频,譬如,假设在步骤803中将处理器的最大频率值调整为2.2GHz,则如果在当前图像帧的绘帧过程中确定当前图像是空白帧,且经过步骤805确定目标频率值为1.2GHz,电子设备再次将处理器的最大频率值从2.2GHz调整为1.2GHz。
在一个示例中,如果电子设备包括多个核,则每个核可以均对应有一个目标频率值,且每个核对应的目标频率值可以均不相同。示例性地,假设多个核包括大核、中核、小核,大核对应的目标频率值可以为2GHz,中核对应的目标频率值可以为1.8GHz,小核对应的目标频率值可以为1.2GHz。
如果多个关键线程分别被调度到不同的核上运行,则可以根据每个核对应的目标频率值,重新确定每个核对应的最大频率值。示例性地,假设多个关键线程包括主线程、渲染线程和线程A,主线程被调度到核2上运行,渲染线程被调度到核1上运行,线程A被调度到核0上运行,则当确定当前图像帧是空白帧后,确定核2对应的最大频率值为2GHz,核1对应的最大频率值为1.8GHz,核0对应的最大频率值为1.2GHz。
请参考图13,图13中包括两种类型的空白帧,其中在第二种类型的空白帧的绘制过程中,渲染线程未执行完全部的操作,这里用虚线表示。在识别出当前图像帧是空白帧的情况下,电子设备将处理器的最大频率值调整为目标频率值,以压低处理器的最大频率值。譬如,假设处理器中运行有关键线程的核包括核0和核i,电子设备分别压低核0的最大频率值以及核i的最大频率值。如此,可以降低电子设备的运行功耗从而可以达到节省功耗的目的。其中图13中的同步信号是由电子设备提供的,目的是使得应用程序的帧率与显示屏刷新的时机保持同步,以避免出现屏幕显示分裂的问题。
需要说明的是,由于电子设备是在绘帧过程中确定当前图像帧是空白帧的,且在当前图像帧的上一个图像帧的queueBuffer结束点后,电子设备还根据上一个图像帧的负载情况确定了处理器的最大频率值,所以如图13所示,在空白帧的开始绘制的一段时间内,也即在未识别出是空白帧之前,电子设备的最大频率值维持根据上一个图像帧的负载情况确定的处理器的最大频率值,也即维持在步骤802中确定的最大频率值。待识别出是空白帧之后,再降低处理器的最大频率值。
还需要说明的是,上述是以目标频率值是固定值为例进行说明。在一些实施例中,每个核对应的目标频率值还可以从一个预设范围内确定,譬如,可以根据系统的能效比,从该预设范围内进行动态地选择。其中,预设范围可以根据需求进行设置,示例性地,预设范围可以为[1GHz,2GHz]。在一个实施例中,目标频率值还可以根据上一个绘帧任务对应的最大频率值确定,譬如,可以确定上一个绘帧任务对应的最大频率值所处的频率范围,然后确定该频率范围对应的目标数值,将上一个绘帧任务对应的最大频率值与目标数值相减,得到目标频率值。其中不同频率范围可以对应有不同的目标数值,通常情况下,当上一个绘帧任务对应的最大频率值较大时,一般要减去的目标数值可以较大些,当上一个绘帧任务对应的最大频率值较小时,一般要减去的目标数值可以较小些,所以,频率范围内的取值较大时,对应的目标数值一般也较大,反之,频率范围内的取值较小时,对应的目标数值一般也较小。
还需要说明的是,如果多个核中存在没有被调度的核,或者说如果多个核中存在某个核上没有运行关键线程,则该核的最大频率值可以调整为一个默认的较小的数值,以进一步减小运行功耗。
在一个示例中,由负载计算模块执行步骤805,并在确定处理器的目标频率值后,将目标频率值发送给资源控制模块,以便于资源控制模块根据该目标频率值,按照预置的策略调整处理器的运行频率。
步骤806:回收定时器资源。
也就是说,在确定当前图像帧是空白帧的情况下,电子设备取消定时器BOOST机制,其中,定时器BOOST机制可以是在一个绘帧任务结束时启动。如此,通过取消定时器BOOST机制,就不会在空白帧对应的绘制时间窗口内有绘帧超时的判断结果,从而也就不会导致自动提频的问题。
在一个示例中,在确定当前图像帧是空白帧的情况下,还可以降低多个关键线程的运行优先级,譬如,将多个关键线程的优先级从yj降到yi,在一个示例中,yj根据普通任务动态设置,如100~139,示例性地,yj为120,其中数值越大优先级越低,所以yi是比yj大的一个数值,作为示例而非限定,yi可以为130。除此之外,还可以降低SF进程的优先级,也就是说,降低与绘帧任务相关的其他功能模块的运行优先级。
需要说明的是,上述实施例是以当前图像帧的上一个图像帧是非空白帧为例进行说明,在另一实施例中,如果当前图像帧的上一个图像帧是空白帧,则在到达当前图像帧的绘制时机后,可以在绘制过程中确定当前图像帧是否为空白帧。在一个示例中,如果当前图像帧是空白帧,则可以确定目标频率值,并将处理器的最大频率值调整为目标频率值,该过程中确定的目标频率值可以是动态确定的,也可以是预先设置的固定频率值。在另一个示例中,如果当前图像帧是空白帧,则可以继续维持处理器的最大频率值,也就是说,可以不需要再次确定目标频率值,而是保持上一个空白帧对应的最大频率值即可。
在本申请实施例中,在绘帧过程中,通过识别空白帧,调整处理器的最大频率值至一个较低的频点,可以更好的平衡性能和功耗,解决了用户交互场景非必要提频导致的性能过剩、功耗浪费问题。具体来说,通过识别指定绘帧任务的主线程及渲染线程等,对当前图像帧进行类型标记,在接收帧模型的桩点时统计其运行状态、绘制执行等相关信息来决策供需策略,实现自动平衡性能和功耗的目标。
请参考图14,图14是根据另一示例性实施例示出的一种调整频率的方法流程示意图,作为示例而非限定,该方法应用于电子设备中,电子设备通过图6中的多个模块的交互实现,具体地,该方法可以包括如下部分或者全部内容:
1401:应用程序接收同步信号。
在一个实施例中,该同步信号可以由帧模型中的SF模块发送给应用程序,该同步信号用于指示应用程序执行绘帧操作。
1402:应用程序启动多个关键线程,多个关键线程用于绘制当前图像帧。
如前文所述,多个关键线程主要包括主线程和渲染线程,进一步地,多个关键线程还可以包括其他线程,譬如其他线程包括线程A。
当前图像帧也即为正准备绘制的图像帧。当前图像帧的类型可能是空白帧,也可能是非空白帧。具体地,当应用程序的帧率较低时,应用程序在接收到同步信号后,为了使得绘帧操作与屏幕刷新操作保持一致,应用程序可以选择性的不绘制一些图像帧,这些图像帧即为空白帧。不难理解,除了空白帧之外的图像帧即为非空白帧。
作为本申请的一个示例,空白帧包括空白帧NR和空白帧NQ两种类型。如果当前图像帧是空白帧,则可以根据空白帧的类型,启动多个关键线程。譬如,如果是空白帧NR,则应用程序启动主线程,但主线程不会拉起渲染线程。再如,如果是空白帧NQ,则应用程序启动主线程,主线程拉起渲染线程,但渲染线程不执行draw()请求,也即不执行绘制流程。
接下来以当前图像帧是空白帧为例进行说明。
1403:应用程序调用帧模型。
作为本申请的一个示例,如果当前图像帧是空白帧,则应用程序会调用帧模型中的第一帧模块或者第二帧模块。第一帧模型内插入有桩点1,在该桩点1处添加第一插桩代码,第一插桩代码用于识别上述第一种类型的空白帧,也即空白帧NR。第二帧模型内插入有桩点2,在该桩点2处添加第二插装代码,第二插装代码用于识别上述第二种类型的空白帧,也即空白帧NQ。
若当前图像帧是第一种类型的空白帧,也即是空白帧NR,则应用程序中的主线程在运行过程中会调用第一帧模块;若当前图像帧是第二种类型的空白帧,也即是空白帧NQ,则应用程序中的渲染线程在运行过程中会调用帧模型中的第二帧模块。
1404:在当前图像帧是空白帧的情况下,帧模型向代理模块发送第一消息。
在一种情况下,如果当前图像帧是第一种类型的空白帧,则帧模型通过第一帧模块向代理模块发送第一消息,此时第一消息中携带第一桩点信息,第一桩点信息用于指示桩点1。
在另一种情况下,如果当前图像帧是第二种类型的空白帧,则帧模型通过第二帧模块向代理模块发送第一消息,此时第一消息中携带第二桩点信息,第二桩点信息用于指示桩点2。
1405:代理模块将第一消息转发给消息中心处理模块。
如前文所述,代理模块起到透传消息的作用,所以代理模块接收到帧模型下发的第一消息后,将第一消息转发给消息中心处理模块进行消息处理。
1406:消息中心处理模块解析第一消息。
其中,第一消息中携带第一桩点信息或第二桩点信息,第一桩点信息用于指示当前图像帧是空白帧NR,第二桩点信息用于指示当前图像帧是空白帧NQ。
在一个示例中,消息中心处理模块每当接收代理模块转发的消息时,都会对消息进行解析处理,以确定消息的语义。所以,消息中心处理模块接收第一消息后,对第一消息进行解析处理。在一种情况下,如果当前图像帧的第一种类型的空白帧,则通过对第一消息进行解析后,得到第一桩点信息,此时消息中心处理模块确定当前图像帧是空白帧;在另一种情况下,如果当前图像帧是第二种类型的空白帧,则通过对第一消息进行解析后,得到第二桩点信息,此时消息中心处理模块确定当前图像帧是空白帧。
1407:消息中心处理模块向资源控制模块发送空白帧指示。
空白帧指示用于表示当前图像帧是空白帧。
在消息中心处理模块根据第一消息的解析结果确定当前图像帧是空白帧的情况下,向资源控制模块发送空白帧指示,以便于资源控制模块调整处理器的最大频率值。在一个示例中,消息中心处理模块可以调用资源控制模块提供的指定接口,以将空白帧指示发送给资源控制模块。指定接口可以根据实际需求进行设置。
需要说明的是,上述仅是以消息中心处理模块向资源控制模块发送空白帧指示为例进行说明,在另一实施例中,消息中心处理模块还可以采用其他方式通知资源控制模块当前图像帧是空白帧,本申请实施例对此不作限定。
1408:资源控制模块将在当前绘帧任务中的处理器的最大频率值调整为目标频率值。
资源控制模块在接收到消息中心处理模块发送的空白帧指示后,确定当前绘帧任务中绘帧的是空白帧,该种情况下,资源控制模块将处理器的最大频率值调整为较低的一个目标频率值,以对处理器进行压频。其中,资源控制模块调整处理器的最大频率值的具体实现可以参见图8实施例中的步骤805,这里不再重复赘述。
在一个实施例中,资源控制模块还可以取消定时器BOOST机制,以使得在空白帧对应的绘制时间窗口内不会有绘帧超时的判断结果,从而也就不会导致自动提频的问题。
在一个实施例中,资源控制模块还可以降低多个关键线程的运行优先级,譬如,将多个关键线程的优先级从yj降到yi,具体可以参见上述。
在本申请实施例中,在绘帧过程中,通过识别空白帧,调整处理器的最大频率值至一个较低的频点,可以更好的平衡性能和功耗,解决了用户交互场景非必要提频导致的性能过剩、功耗浪费问题。
上述实施例是以当前图像帧是空白帧为例进行说明。在另一种可能的情况下,当前图像帧不是空白帧,此时,请参考图15,图15是根据另一示例性实施例示出的一种调整频率的方法流程示意图,作为示例而非限定,该方法应用于电子设备中,电子设备通过图6中的多个模块的交互实现,具体地包括如下内容:
1501至1502请参见上述图14所示实施例中的1401至1402。
1503:应用程序调用帧模型中的第三帧模块。
如果当前图像帧不是空白帧,则应用程序不调用帧模型中的第一帧模块或第二帧模块,而是调用第三帧模块执行绘制操作。第三帧模块的数量可能包括多个,示例性地,第三帧模块包括queueBuffer模块,queueBuffer模块用于执行queueBuffer。
1504:帧模型向代理模块下发第二消息。
作为本申请的一个示例,在当前图像帧不是空白帧的情况下,应用程序调用帧模型中的第三帧模块后,第三帧模块会生成一个或者多个第二消息,第三帧模块将一个或者多个第二消息发送给代理模块。示例性地,第二消息包括queueBufferEnd消息,queueBufferEnd消息用于指示queueBuffer已结束。
1505:代理模块将第二消息转发给消息中心处理模块。
如前文所述,代理模块起到透传消息的作用,所以代理模块接收该一个或者多个第二消息后,将该一个或者多个第二消息转发给消息中心处理模块。
1506:消息中心处理模块解析第二消息。
消息中心处理模块接收到该一个或者多个第二消息后,对一个或者多个第二消息进行解析,以确定各个第二消息的语义。以便于根据第二消息的语义,执行相应的消息处理操作。譬如,当消息中心处理模块确定第二消息是用于指示queueBuffer已结束,也即接收的第二消息是queueBufferEnd消息时,进入如下步骤1507。
1507:消息中心处理模块向关键线程识别模块发送线程识别指示。
也即当到达图像帧的queueBuffer结束点时,消息中心处理模块向关键线程识别模块发送线程识别指示,使得关键线程识别模块进行线程识别等操作。
1508:关键线程识别模块识别各个关键线程,以及确定各个关键线程的相关信息。
在一个示例中,一个关键线程的相关信息包括但不限于该关键线程的运行时间、在处理器上的负载、所在核的核信息等。
1509:关键线程识别模块将各个关键线程的相关信息发送给负载计算模块。
1510:负载计算模块根据各个关键线程的相关信息,确定一个绘帧任务中的多个关键线程在处理器上的负载。
1511:负载计算模块根据所确定的负载,确定处理器的最大频率值。
其具体实现过程可以参见图8实施例中的步骤802。
1512:负载计算模块将所确定的处理器的最大频率值发送给资源控制模块。
1513:资源控制模块基于负载计算模块发送的最大频率值,调整处理器的运行频率。
作为示例而非限定,在上述绘帧过程中,消息中心模块在接收到queueBufferEnd消息后,还可以通知资源控制模块,以使得资源控制模块启动定时器BOOST机制,以便于在对非空白帧进行绘制的过程中当出现绘帧超时时可以通过定时器BOOST机制进行自动提频。
在本申请实施例中,在绘帧过程中,当达到queueBuffer结束点时,确定上一个绘帧任务中各个关键线程在处理器的负载,然后根据所确定的负载,调整在queueBuffer结束点之后的绘帧任务中处理器的最大频率值,以使得处理器的运行频率处于较为合理的范围内,从而达到平衡性能和功耗的效果。
图16是根据另一示例性实施例示出的一种调整频率的方法流程示意图,该方法可以应用于电子设备中,具体可以包括如下实现内容:
1610:绘制第一图像帧,其中,在绘制第一图像帧时电子设备的处理器的运行频率为第一频率值。
在一个示例中,第一图像帧为上述各个实施例中的当前图像帧。
其中,第一频率值可以根据处理器当前的最大频率值确定。在一个示例中,第一图像帧的上一个图像帧是非空白帧,此时,处理器当前的最大频率值的确定过程可以参见图8实施例中的步骤801至步骤802。在实施中,电子设备可以根据预置的资源分配策略和处理器当前的最大频率值,确定第一频率值,然后将处理器的运行频率调整为第一频率值。
作为本申请的一个示例,第一频率值可以为与处理器当前的最大频率值非常接近的一个值,本申请实施例对此不作具体限定。
在另一个示例中,如果第一图像帧的上一个图像帧的空白帧,则处理器当前的最大频率值可以是上一次确定的目标频率值,目标频率值的确定方式可以参见下文。
1620:若第一图像帧是空白帧,则确定第二频率值,第二频率值小于第一频率值,空白帧是指未输出图像数据的图像帧。
作为本申请的一个示例,若第一图像帧是空白帧,则确定第二频率值的具体实现可以包括:若第一图像帧是空白帧,则获取目标频率值,目标频率值小于上一个非空白帧的绘帧任务中处理器的最大频率值,将处理器的最大频率值调整为目标频率值,根据调整后的处理器的最大频率值,确定第二频率值。
示例性地,目标频率值小于步骤1610中所述的处理器当前的最大频率值。
电子设备可以根据预置的资源分配策略和目标频率值,确定第二频率值。作为本申请的一个示例,第二频率值可以为与目标频率值非常接近的一个值,本申请实施例对此不作具体限定。
作为本申请的一个示例,处理器包括多个核,多个核中的每个核对应有不同的目标频率值。此时若第一图像帧是空白帧,则获取目标频率值的具体实现可以包括:若第一图像帧是空白帧,则分别获取多个核中的每个目标核对应的目标频率值,目标核是多个核中运行有用于执行绘帧任务的关键线程的核。相应的,将所述处理器的最大频率值调整为目标频率值的具体实现可以包括:分别将每个目标核的最大频率值调整为每个目标核对应的目标频率值。
需要说明的是,本申请实施例以目标频率值是预先设置的固定频率值为例进行说明,在另一实施例中,目标频率值还可以动态确定,其具体可以参见图8实施例,这里不再重复赘述。
作为本申请的一个示例,在步骤1620之前,判断第一图像帧是否是空白帧。具体地,电子设备可以在绘帧第一图像帧的过程中,根据多个关键线程的运行情况,确定第一图像帧是否是空白帧。多个关键线程中的每个关键线程用于执行绘帧任务,示例性地,多个关键线程包括主线程、渲染线程和其他线程A。
作为本申请的一个示例,多个关键线程包括主线程和渲染线程,该种情况下,在绘帧第一图像帧的过程中,根据多个关键线程的运行情况,确定第一图像帧是否是空白帧的具体实现可以包括如下两种可能的情况:
第一种情况:在绘帧第一图像帧的过程中,若主线程未调用渲染线程,则确定第一图像帧是空白帧。
也即是,当在绘制第一图像帧的过程中,如果有UI THREAD无RENDER THREAD,则确定第一图像帧是空白帧。
在一个示例中,电子设备包括第一帧模块和消息中心处理模块。此时,在绘帧第一图像帧的过程中,若主线程运行过程中调用第一帧模块内的第一插装代码,则第一帧模块向消息中心处理模块发送第一桩点信息,第一桩点信息用于指示第一插装代码在第一帧模块中的插入位置。消息中心处理模块接收第一桩点信息后,确定主线程未调用渲染线程。
第二种情况下:在绘帧第一图像帧的过程中,若主线程调用渲染线程后,渲染线程未绘制渲染数据,则确定第一图像帧是空白帧。
在一个示例中,电子设备包括第二帧模块和消息中心处理模块。此时,在绘帧第一图像帧的过程中,若在主线程调用渲染线程后,渲染线程运行过程中调用第二帧模块内的第二插装代码,则第二帧模块向消息中心处理模块发送第二桩点信息,第二桩点信息用于指示第二插装代码在第二帧模块中的插入位置。消息中心处理模块接收第二桩点信息后,确定渲染线程未绘制渲染数据。
也即是,当在绘制第一图像帧的过程中,如果有UI THREAD和RENDER THREAD,但无queuebuffer,则确定第一图像帧是空白帧。
1630:将处理器的运行频率调整为第二频率值。
进一步地,在第一图像帧是空白帧的情况下,若第一图像帧的上一帧是非空白帧,则取消定时器计时功能,其中,定时器计时功能用于在上一帧的绘帧任务结束后计时达到预设时长的情况下提高处理器的最大频率值。
其中,预设时长可以由技术人员根据实际需求进行设置,或者也可以由电子设备默认设置,本申请实施例对此不作限定。
进一步地,在第一图像帧是空白帧的情况下,降低多个关键线程中的至少一个关键线程的运行优先级。也即是,在第一图像帧是空白帧的情况下,可以降低多个关键线程中的部分或者全部关键线程的运行优先级,以使得其他线程能够优先使用资源,从而可以提高其他功能的完成效率。
在本申请实施例中,在绘帧过程中,通过识别空白帧,调整处理器的运行频率值至一个较低的频点,可以更好的平衡性能和功耗,解决了用户交互场景非必要提频导致的性能过剩、功耗浪费问题。
图17是本申请实施例提供的一种调整频率的装置的结构示意图,该装置可以由软件、硬件或者两者的结合实现成为计算机设备的部分或者全部,该计算机设备可以为图5所示的电子设备。参见图17,该装置包括:
绘制模块1710,用于绘制第一图像帧,其中,在绘制所述第一图像帧时所述电子设备的处理器的运行频率为第一频率值;
资源控制模块1720,用于若所述第一图像帧是空白帧,则确定第二频率值,所述第二频率值小于所述第一频率值,所述空白帧是指未输出图像数据的图像帧;
所述资源控制模块1720,还用于将所述处理器的运行频率调整为所述第二频率值。
作为本申请的一个示例,所述资源控制模块1720用于:
若所述第一图像帧是所述空白帧,则获取目标频率值,所述目标频率值小于上一个非空白帧的绘帧任务中所述处理器的最大频率值;
将所述处理器的最大频率值调整为所述目标频率值;
根据调整后的所述处理器的最大频率值,确定所述第二频率值。
作为本申请的一个示例,所述装置还包括帧模型,所述帧模型用于:
在绘帧所述第一图像帧的过程中,根据多个关键线程的运行情况,确定所述第一图像帧是否是所述空白帧,所述多个关键线程中的每个关键线程用于执行绘帧任务。
作为本申请的一个示例,所述多个关键线程包括主线程和渲染线程;所述帧模型用于:
在绘帧所述第一图像帧的过程中,若所述主线程未调用所述渲染线程,则确定所述第一图像帧是所述空白帧;或者,
在绘帧所述第一图像帧的过程中,若所述主线程调用所述渲染线程后,所述渲染线程未绘制渲染数据,则确定所述第一图像帧是所述空白帧。
作为本申请的一个示例,所述电子设备包括第一帧模块和消息中心处理模块;
在绘帧所述第一图像帧的过程中,若所述主线程运行过程中调用所述第一帧模块内的第一插装代码,则所述第一帧模块向所述消息中心处理模块发送第一桩点信息,所述第一桩点信息用于指示所述第一插装代码在所述第一帧模块中的插入位置;
所述消息中心处理模块接收所述第一桩点信息后,确定所述主线程未调用所述渲染线程。
作为本申请的一个示例,所述电子设备包括第二帧模块和消息中心处理模块;
在绘帧所述第一图像帧的过程中,若在所述主线程调用所述渲染线程后,所述渲染线程运行过程中调用所述第二帧模块内的第二插装代码,则所述第二帧模块向所述消息中心处理模块发送第二桩点信息,所述第二桩点信息用于指示所述第二插装代码在所述第二帧模块中的插入位置;
所述消息中心处理模块接收所述第二桩点信息后,确定所述渲染线程未绘制所述渲染数据。
作为本申请的一个示例,所述处理器包括多个核,所述多个核中的每个核对应有不同的目标频率值;所述资源控制模块1720用于:
若所述第一图像帧是所述空白帧,则分别获取所述多个核中的每个目标核对应的目标频率值,所述目标核是所述多个核中运行有用于执行绘帧任务的关键线程的核;
所述将所述处理器的最大频率值调整为所述目标频率值,包括:
分别将所述每个目标核的最大频率值调整为所述每个目标核对应的目标频率值。
作为本申请的一个示例,所述资源控制模块1720还用于:
在所述第一图像帧是所述空白帧的情况下,若所述第一图像帧的上一帧是非空白帧,则取消定时器计时功能,其中,所述定时器计时功能用于在所述上一帧的绘帧任务结束后计时达到预设时长的情况下提高所述处理器的最大频率值。
作为本申请的一个示例,所述资源控制模块1720还用于:
在所述第一图像帧是所述空白帧的情况下,降低所述多个关键线程中的至少一个关键线程的运行优先级。
在本申请实施例中,在绘帧过程中,通过识别空白帧,调整处理器的最大频率值至一个较低的频点,可以更好的平衡性能和功耗,解决了用户交互场景非必要提频导致的性能过剩、功耗浪费问题。具体来说,通过识别指定绘帧任务的主线程及渲染线程等,对当前图像帧进行类型标记,在接收帧模型的桩点时统计其运行状态、绘制执行等相关信息来决策供需策略,实现自动平衡性能和功耗的目标。
需要说明的是:上述实施例提供的调整频率装置在调整频率时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
上述实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请实施例的保护范围。
上述实施例提供的调整频率装置与调整频率方法实施例属于同一构思,上述实施例中单元、模块的具体工作过程及带来的技术效果,可参见方法实施例部分,此处不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,比如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(比如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(比如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(比如:软盘、硬盘、磁带)、光介质(比如:数字通用光盘(Digital Versatile Disc,DVD))或半导体介质(比如:固态硬盘(Solid State Disk,SSD))等。
以上所述为本申请提供的可选实施例,并不用以限制本申请,凡在本申请的揭露的技术范围之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种调整频率的方法,其特征在于,应用于电子设备,所述方法包括:
绘制第一图像帧,其中,在绘制所述第一图像帧时所述电子设备的处理器的运行频率为第一频率值;
在绘制所述第一图像帧的过程中,若多个关键线程中的主线程未调用所述多个关键线程中的渲染线程,或者若所述主线程调用所述渲染线程后所述渲染线程未绘制渲染数据,则确定所述第一图像帧是空白帧,所述多个关键线程中的每个关键线程用于执行绘帧任务,所述空白帧是指未输出图像数据的图像帧;
在所述第一图像帧是所述空白帧的情况下,确定第二频率值,所述第二频率值小于所述第一频率值;
将所述处理器的运行频率调整为所述第二频率值。
2.根据权利要求1所述的方法,其特征在于,所述在所述第一图像帧是所述空白帧的情况下,确定第二频率值,包括:
若所述第一图像帧是所述空白帧,则获取目标频率值,所述目标频率值小于上一个非空白帧的绘帧任务中所述处理器的最大频率值;
将所述处理器的最大频率值调整为所述目标频率值;
根据调整后的所述处理器的最大频率值,确定所述第二频率值。
3.根据权利要求1所述的方法,其特征在于,所述电子设备包括第一帧模块和消息中心处理模块;所述方法还包括:
在绘帧所述第一图像帧的过程中,若所述主线程运行过程中调用所述第一帧模块内的第一插装代码,则所述第一帧模块向所述消息中心处理模块发送第一桩点信息,所述第一桩点信息用于指示所述第一插装代码在所述第一帧模块中的插入位置;
所述消息中心处理模块接收所述第一桩点信息后,确定所述主线程未调用所述渲染线程。
4.根据权利要求1所述的方法,其特征在于,所述电子设备包括第二帧模块和消息中心处理模块;所述方法还包括:
在绘帧所述第一图像帧的过程中,若在所述主线程调用所述渲染线程后,所述渲染线程运行过程中调用所述第二帧模块内的第二插装代码,则所述第二帧模块向所述消息中心处理模块发送第二桩点信息,所述第二桩点信息用于指示所述第二插装代码在所述第二帧模块中的插入位置;
所述消息中心处理模块接收所述第二桩点信息后,确定所述渲染线程未绘制所述渲染数据。
5.根据权利要求2所述的方法,其特征在于,所述处理器包括多个核,所述多个核中的每个核对应有不同的目标频率值;
所述若所述第一图像帧是所述空白帧,则获取目标频率值,包括:
若所述第一图像帧是所述空白帧,则分别获取所述多个核中的每个目标核对应的目标频率值,所述目标核是所述多个核中运行有用于执行绘帧任务的关键线程的核;
所述将所述处理器的最大频率值调整为所述目标频率值,包括:
分别将所述每个目标核的最大频率值调整为所述每个目标核对应的目标频率值。
6.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
在所述第一图像帧是所述空白帧的情况下,若所述第一图像帧的上一帧是非空白帧,则取消定时器计时功能,其中,所述定时器计时功能用于在所述上一帧的绘帧任务结束后计时达到预设时长的情况下提高所述处理器的最大频率值。
7.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
在所述第一图像帧是所述空白帧的情况下,降低所述多个关键线程中的至少一个关键线程的运行优先级。
8.一种调整频率的装置,其特征在于,配置于电子设备,所述装置包括:
绘制模块,用于绘制第一图像帧,其中,在绘制所述第一图像帧时所述电子设备的处理器的运行频率为第一频率值;
帧模型,用于在绘制所述第一图像帧的过程中,若多个关键线程中的主线程未调用所述多个关键线程中的渲染线程,或者若所述主线程调用所述渲染线程后所述渲染线程未绘制渲染数据,则确定所述第一图像帧是空白帧,所述多个关键线程中的每个关键线程用于执行绘帧任务,所述空白帧是指未输出图像数据的图像帧;
资源控制模块,用于在所述第一图像帧是所述空白帧的情况下,确定第二频率值,所述第二频率值小于所述第一频率值;
所述资源控制模块,还用于将所述处理器的运行频率调整为所述第二频率值。
9.一种电子设备,其特征在于,电子设备的结构中包括处理器和存储器,所述存储器用于存储支持所述电子设备执行如权利要求1-7中任一项所提供的方法的程序,以及存储用于实现如权利要求1-7中任一项所述的方法所涉及的数据;所述处理器被配置为用于执行所述存储器中存储的程序。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如权利要求1-7任意一项所述的方法。
CN202210402879.7A 2022-03-17 2022-04-18 调整频率的方法、装置、电子设备及可读存储介质 Active CN114911336B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310358482.7A CN116774809A (zh) 2022-03-17 2022-04-18 调整频率的方法、装置、电子设备及可读存储介质

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2022102670483 2022-03-17
CN202210267048 2022-03-17

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202310358482.7A Division CN116774809A (zh) 2022-03-17 2022-04-18 调整频率的方法、装置、电子设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN114911336A CN114911336A (zh) 2022-08-16
CN114911336B true CN114911336B (zh) 2023-04-07

Family

ID=82764670

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202210402879.7A Active CN114911336B (zh) 2022-03-17 2022-04-18 调整频率的方法、装置、电子设备及可读存储介质
CN202310358482.7A Pending CN116774809A (zh) 2022-03-17 2022-04-18 调整频率的方法、装置、电子设备及可读存储介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202310358482.7A Pending CN116774809A (zh) 2022-03-17 2022-04-18 调整频率的方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (2) CN114911336B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116704087B (zh) * 2022-10-17 2024-02-27 荣耀终端有限公司 一种参数调整方法及电子设备
CN117130768A (zh) * 2023-02-25 2023-11-28 荣耀终端有限公司 一种调频关系表的生成方法及电子设备
CN116204059B (zh) * 2023-04-28 2023-09-26 荣耀终端有限公司 眼动追踪的帧率调整方法和装置
CN116414215B (zh) * 2023-06-05 2023-10-20 荣耀终端有限公司 调频方法和调频装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112789651A (zh) * 2019-03-27 2021-05-11 华为技术有限公司 一种应用于终端的频率调整方法、装置及电子设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4528027B2 (ja) * 2004-05-11 2010-08-18 株式会社バンダイナムコゲームス 画像生成プログラム、情報記憶媒体及び画像生成システム
CN106155263B (zh) * 2015-04-14 2021-07-20 华为技术有限公司 一种参数调节方法及装置
WO2019205172A1 (zh) * 2018-04-28 2019-10-31 华为技术有限公司 一种图像处理器的功率分配的方法、装置及系统
CN110209501B (zh) * 2019-06-03 2022-02-08 Oppo广东移动通信有限公司 图形处理器的频率调整方法、装置、终端及存储介质
CN112363842B (zh) * 2020-11-27 2023-01-06 Oppo(重庆)智能科技有限公司 图形处理器的频率调整方法、装置、电子设备及存储介质
CN113132059B (zh) * 2021-04-21 2022-02-25 广东工业大学 一种面向空白帧传输的帧同步方法和装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112789651A (zh) * 2019-03-27 2021-05-11 华为技术有限公司 一种应用于终端的频率调整方法、装置及电子设备

Also Published As

Publication number Publication date
CN114911336A (zh) 2022-08-16
CN116774809A (zh) 2023-09-19

Similar Documents

Publication Publication Date Title
CN114911336B (zh) 调整频率的方法、装置、电子设备及可读存储介质
WO2021027747A1 (zh) 一种界面显示方法及设备
CN114518817B (zh) 一种显示方法、电子设备及存储介质
WO2020221063A1 (zh) 切换父页面和子页面的方法、相关装置
CN114579075B (zh) 数据处理方法和相关装置
CN113254120B (zh) 数据处理方法和相关装置
EP4280056A1 (en) Method for application performing drawing operation, and electronic device
CN113132526B (zh) 一种页面绘制方法及相关装置
CN114816167B (zh) 应用图标的显示方法、电子设备及可读存储介质
CN116048933B (zh) 一种流畅度检测方法
CN115097994B (zh) 数据处理方法和相关装置
WO2023040666A1 (zh) 键盘显示方法、折叠屏设备和计算机可读存储介质
CN114697446B (zh) 一种刷新率切换方法、电子设备及存储介质
WO2023001163A1 (zh) 一种可提升动效性能的屏幕刷新方法及设备
WO2022247541A1 (zh) 一种应用程序动效衔接的方法及装置
WO2023066165A1 (zh) 动画效果显示方法及电子设备
CN116501210B (zh) 一种显示方法、电子设备及存储介质
CN113641431A (zh) 二维码的增强显示的方法和终端设备
WO2024016798A9 (zh) 图像显示方法和相关装置
WO2023066177A1 (zh) 动画效果显示方法及电子设备
WO2023160209A1 (zh) 帧数据显示方法、电子设备及存储介质
EP4325355A1 (en) Dynamic effect calculating method and apparatus
WO2024083014A1 (zh) 界面生成方法及电子设备
WO2024067551A1 (zh) 界面显示方法及电子设备
WO2024087970A1 (zh) 数据处理方法和相关装置

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