(例如,时间量、CPU周期的 数量等等),对所计算/测量的值的结果进行平均,以及确定完成该处理器的稳定状态工作 负荷所需要的时间/处理的量。基于这些计算,DCVS解决方案可以计算上限频率阈值和下 限频率阈值,在这样的范围内处理器可以操作为满足所计算出的稳定状态要求,同时实现 降低的功率以及可接受的响应度水平(例如,使得移动设备用户不会注意到差异,等等)。
[0073] 通常,处理器被要求处理/执行瞬态工作负荷,包括DCVS解决方案没有被先验地 通知的并且在稳定状态或频率阈值计算中没有考虑到的"工作突发"。瞬态工作负荷可以是 系统事先不知道的任何任务或工作单元,包括动态的、临时的或者引起处理器的工作负荷 中的未预料到的高峰(spike)的任何工作单元。举例而言,瞬态工作负荷可以包括响应于 用户输入、系统事件、检测到的环境状况、远程过程呼叫等等,由处理器执行的任何或所有 任务。举另一个例子,瞬态工作负荷可以是在用户触摸便携式计算设备(PCD)的触摸屏以 发起用户动作时生成的,PCD必须立即对其进行响应(例如,用界面更新、通过显示新的图 片、启动新动作等等)。
[0074] 如上文所提及的,瞬态工作负荷不是DCVS解决方案能够提前适当考虑的(例如, 作为确定上限阈值和下限阈值的一部分)连续的稳定状态工作负荷。因此,瞬态工作负荷 可能使得处理器在繁忙状态保持比预期更长的时间,和/或以其它方式造成处理器执行时 间的不确定性。这样的不确定性可能使得计算设备无效率地或不适当地分配处理和系统资 源,并且可能对计算设备的整体性能和/或响应度有显著影响,尤其是在计算设备包括多 个处理内核时。
[0075] 现代计算设备通常是多处理器系统,其包括片上系统(SoC)和/或多处理内核 (例如,处理器、内核等等)。在多处理器系统中,单线程由第一处理内核处理,然后由第二 处理内核处理,然后再由第一处理内核处理是很常见的。第一处理内核中的一个线程的结 果触发在第二处理内核中执行的另一个线程中的操作也是很常见的。例如,一个或多个处 理内核可以依赖于当前活动的处理器生成的结果,并且可能被要求保持在空闲或等待状 态,直到当前活动处理器完成其工作负荷和/或完成处理一个或多个任务。在这些情况中, 每个处理内核可以在其等待来自当前活动处理器的处理结果时,替代地进入空闲/等待状 态。在这些处理内核等待当前活动处理器生成的结果时,它们各自的DCVS解决方案可以降 低它们的工作速度(即,经由频率/电压的降低),使得计算设备显得无响应或速度慢。也 就是说,多处理器计算设备上实现的DCVS解决方案可能不正确地推断出:处理内核中的一 些处理内核应该以较低的频率或电压(其低于针对运行当前活动的线程来优化的频率或 电压)进行操作,并且使得计算设备显得无响应或速度慢。
[0076] 各个方面通过计算并强制执行性能保证来克服上述局限,其保证处理器内核不会 在繁忙状态(例如,由于瞬态工作负荷造成的)保持比预定时间量更长的时间,该预定时间 量是处理内核完成其预先计算的稳定状态工作负荷所要求的时间量。这样的性能保证可以 由操作系统、资源、DCVS解决方案和/或其它处理内核用于更好地估计、调度和/或计划将 来的操作,比如分配资源和对用于执行的线程进行调度。通过这种方式,该性能保证能够使 计算设备满足其响应度要求,并且从而改善用户体验。
[0077] 性能保证允许DCVS解决方案基于可变延迟来调整处理器的频率和/或电压,其确 保不管处理器的当前或先前的工作频率/电压,处理内核只比其稳定状态工作负荷落后最 多定义的最大工作量。
[0078] 图10描绘了一个方面计算设备1000中的逻辑部件和信息流,该计算设备实现强 制执行性能保证的动态时钟频率/电压调节0CVS)解决方案。该计算设备1000可以包括 硬件单元1002、内核空间软件单元1004和用户空间软件单元1006。在一个方面,内核空间 软件单元1004和用户空间软件单元1006可以被包括在操作系统或计算设备1000的内核 中。例如,计算设备可以包括被组织到用户空间(非经特许的代码在这里运行)和内核空 间(经特许的代码在这里运行)中。这样的分离在安卓和其它通用公共许可(GPL)环境中 尤其重要,其中在所述GPL环境中作为内核空间的一部分的代码必须是GPL许可的,而运行 在用户空间中的代码不需要是GPL许可的。
[0079] 硬件单元1002可以包括多个处理内核(例如,CPU0、CPU1、2D-GPU0、2D-GPU1、 3D-GPU0等等)以及资源模块1020,该资源模块1020包括处理内核共享的各种硬件资源 (例如,时钟、功率管理集成电路或"PMIC"、高速暂存存储器或"SPM"等等)。
[0080] 内核空间软件单元1004可以包括对应于硬件单元1002中的处理内核中的至少 一个处理内核的处理器模块(CPU_0空闲状态、CPU_1空闲状态、2D-GPU_0驱动、2D-GPU_1 驱动、3D-GPU_0驱动等等),这些模块中的每个模块可以与一个或多个空闲状态设备模块 1008通信。该内核空间软件单元1004还可以包括定时器驱动模块1014、输入事件模块1010 和CPU请求状态模块1012。在一个方面,定时器驱动器模块1014可以驱动(或维持)每个 处理内核的定时器。
[0081] 用户空间软件单元1006可以包括DCVS控制模块416,其被配置为从空闲状态设 备模块1008、输入事件模块1010、定时器驱动器模块1014和CPU请求状态模块1012接收 输入,和/或向CPU频率热插拔模块1018发送输出。该CPU频率热插拔模块1018可以被 配置为向资源模块1020发送通信信号。该CPU频率热插拔模块1018还可以被配置为单独 地(例如,一次一个、连续地等等)或同时地(例如,在几乎相同的时间点)向每个内核应 用电压/频率变化。
[0082]DCVS控制模块1016可以包括适合于在任何或所有处理内核(例如,CPU0、CPU1、 2D-GPU0、2D-GPU1、3D-GPU0等等)上执行的和/或适合于在计算设备1000上实现DCVS 解决方案的线程。在一个方面,DCVS控制模块1016可以包括对端口或套接字进行监控的线 程,其监控使得DCVS控制模块1016从一个或多个处理内核收集信息并在处理内核上执行 DCVS操作的事件(例如,数据缓存器填满、定时器期满、状态转换等等)的发生。在一个方 面,DCVS控制模块1016可以包括单线程的DCVS解决方案,其监控两个或更多个处理内核。 在一个方面,DCVS控制模块1016可以包括针对每个处理内核的DCVS解决方案线程。
[0083] 在一个方面,DCVS控制模块1016可以被配置为生成脉冲序列。DCVS控制模块1016 可以通过对处理内核的繁忙和/或空闲状态(或状态之间的转换)进行监控或抽样,来生 成该脉冲序列。DCVS控制模块1016还可以基于从对一个或多个处理器运行队列的深度进 行监控所获取的信息,来生成脉冲序列。运行队列可以包括运行线程以及能够在处理内核 上运行但是还没来得及运行(例如,由于当前在运行的另一个活动线程等等)的一个或多 个线程的集合。每个处理内核可以有它自己的运行队列,或者单个运行队列可以被多个处 理内核共享。当线程请求进入休眠状态、在等待资源变得可用或已经终止时,可以将其从运 行队列移除。因此,该运行队列中的线程数量(即,运行队列深度)可以识别包括当前正在 处理的(运行的)线程的活动线程(例如,在等待的、在运行的)和等待被处理的线程的数 量。
[0084] 在一个方面,DCVS控制模块1016可以被配置为基于生成的脉冲序列来计算稳定 状态工作负荷、稳定状态要求和/或上限频率/电压阈值和下限频率/电压阈值。上限频 率/电压阈值和下限频率/电压阈值可以定义频率/电压范围,在该范围内处理内核可以 操作为满足其稳定状态性能要求,而同时实现降低的功率开销并满足计算设备1000的响 应度要求。满足响应度要求可以包括执行工作负荷中的所有任务,这样计算设备1000的用 户不会注意到该计算设备的性能或速度的降低。
[0085] DCVS控制模块1016可以被配置为监控整体计算设备1000性能和/或确保处理内 核中的一个或多个处理内核在确立的上限频率阈值和下限频率阈值之间操作。该DCVS控 制模块1016可以调整处理内核的处理资源和/或工作频率,从而它们与阈值相当。
[0086] 如上文所讨论,DCVS控制模块1016可以生成脉冲序列。在一个方面,为处理内核 中的两个或多个处理内核生成的脉冲序列可以在时间上同步,并且交叉相关以生成关联模 型,其包括适合于确定处理内核是否执行协作式和/或相互依赖的操作的信息。在一个方 面,DCVS控制模块1016可以使用该关联模型来确定上限频率阈值和下限频率阈值、初始工 作频率、稳定状态要求和处理器工作负荷,从而这些值考虑处理内核之间的相互依赖性。
[0087] 在一个方面,DCVS控制模块1016可以被配置为计算和/或强制执行性能保证。如 上文所述,处理内核可以被要求处理/执行DCVS解决方案无法适当提前考虑的瞬态工作负 荷。因此,瞬态工作负荷可以使DCVS控制模块1016以次优化频率等级或在次优化频率范 围内操作处理内核中的一个或多个处理内核。例如,由于DCVS控制模块1016无法提前考 虑这些瞬态工作负荷,因此它可能不正确地推断出:处理内核可以操作在较低的频率水平, 该较低的频率水平是在适用于满足计算设备1000的响应度要求的时间段内,完成稳定状 态工作负荷和瞬态工作负荷二者所需要的频率水平。
[0088] 性能保证向计算设备1000提供严格的且可计算的界限,该保证可以由DCVS控制 模块1016用于确保处理内核不会在繁忙状态保持与预定时间/工作量相比要多的时间/ 工作量(例如,由于瞬态工作负荷),在此时间段上该预定时间/工作量是处理内核完成其 稳定状态工作负荷要求所需要的时间/工作量。性能保证允许DCVS控制模块1016确保处 理内核在适用于满足该计算设备1000的响应度要求的时间段内同时完成其稳定状态工作 负荷和其瞬态工作负荷。
[0089] 在各个方面,性能保证可以用任何测量单位计算、定义和/或包括任何测量单位, 该测量单位适用于测量处理器性能或持续时间,比如时间量、工作量、任务数量、指令数量、 (PU周期数量等等。在各个方面,性能保证可以与频率相关联和/或可以是频率的函数。
[0090] 在一个方面,性能保证可以包括一个或多个性能保证值。在各个方面,该性能保证 值(例如,最后期限值、预算值、跳跃到最大值(jump-to-maxvalue)等等)可以用任何适 用于测量处理器性能或持续时间(比如时间量、工作量、任务数量、指令数量、CPU周期数量 等等)的测量单位来表示。
[0091] 在各个方面,该性能保证值可以包括预算值(例如,松弛预算、瞬态预算等)、最后 期限值(例如,瞬态最后期限、瞬态响应最后期限、性能最后期限等等)和/或跳跃到最大 值。
[0092] 该最后期限值可以是用于指示处理器内核完成其工作负荷处理之前的相对时间 的值和/或用于指示在其后处理内核的频率要被增加的相对时间的值。
[0093] 该预算值可以是用于指示处理内核要完成其工作负荷处理之前的剩余的和/或 在其后处理器内核的频率要被增加的时间量。
[0094] 跳跃到最大值可以是用于指示处理器内核要完成其工作负荷处理之前和/或在 其后处理器内核的频率要被增加到最大频率的相对时间的值。
[0095] 该性能保证值可以是与频率或电压相关的、相关联的和/或是其函数。例如,预 算、最后期限和/或跳跃到最大值的每一个可以是根据相应的处理内核的工作频率计算出 的时间值。因此,当处理内核以100MHz的频率工作时,这些值中的每一个可以是10毫秒, 以200MHz的频率工作时为20毫秒,以400MHz的频率工作时为40毫秒等等。以这种方式, 该性能保证值可以由DCVS解决方案用于实现增加处理内核的频率的可变的延迟。
[0096] 如上文所述以及图9中所描绘的,DCVS解决方案可以实现可变的延迟。这样的可 变的延迟确保不管处理内核的实际工作频率,该处理内核只落后其稳定状态工作负荷最多 定义的最大工作量。在一个方面,DCVS解决方案可以将定义的最大工作量(S卩,处理内核可 以落后于其稳定状态工作负荷的量)设置为等于最后期限值乘以该处理内核的最大频率/ 电压。通过这种方式,性能保证不受DCVS解决方案基于稳定状态要求或动态地或"联机"地 来调整该处理内核的频率/电压的影响。
[0097] 在一个方面,该DCVS控制模块1016可以被配置为每次相应的处理内核从空闲转 换到繁忙、进入繁忙状态(例如,在处理工作负荷等)和/或退出空闲状态(例如,当空闲 线程让出处理内核等)时,将最后期限值设置为等于该预算值。
[0098] 在一个方面,DCVS控制模块1016可以被配置为每次相应的处理内核从繁忙转换 到空闲、进入空闲状态(例如,在执行空闲线程等)和/或退出繁忙状态(例如,完成工作 负荷中的所有任务等)时,设置或重置现有最后期限值。
[0099] 图11A-B描绘了用于生成/计算性能保证的一个方面DCVS解决方案方法1100,其 确保处理内核不会在繁忙状态(例如,由于瞬态工作负荷等)保持多于预定时间量的时间, 在此时间段上该预定时间量是处理内核完成其预先计算的、预测的和/或实际的稳定状态 工作负荷所需要的时间。在各个方面,DCVS解决方案的工作可以由该处理内核或另一个处 理内核上执行的线程来执行。在一个方面,DCVS解决方案的一个或多个操作可以由处理内 核上执行的空闲线程来执行。
[0100] 在方框1102中,DCVS解决方案可以使处理内核从空闲状态转换到繁忙状态。在 方框1104中,DCVS解决方案可以将结束空闲时间参数(EndldleTime)的值设置为等于当 前时间值(CurrentTime)。因此,该结束空闲时间参数(EndldleTime)可以存储用于指示该 处理内核上一次退出空闲状态的时间。
[0101] 在各个方面,方框1102和1104的操作可以顺序、并行和/或以任何顺序执行。例 如,在一