技术领域
[0001] 本
发明涉及通信领域,并且更具体的,涉及通信领域中动态电压频率调整(Dynamic Voltage Frequency Scaling,DVFS)的系统及方法。
背景技术
[0002] DVFS是系统在运行过程中,根据场景和系统负载的大小,在满足系统性能的
基础上动态调整
中央处理器(Central Processing Unit,CPU)等相关
硬件的工作电压和工作频率。DVFS能够节省系统功耗。具体而言,在系统不需要高性能时,降
低电压和频率,以降低功耗;在系统需要高性能时,提高电压和频率,以提高性能。
[0003]
现有技术中,
软件可以根据应用场景及系统的运行情况,判断是否需要对CPU的工作电压和工作频率进行调整。这种情况下,是否需要进行DVFS的依据是CPU的工作负载。针对不同的工作负载,为CPU设置不同的工作电压和工作频率。
[0004] 但是,针对CPU的工作负载进行DVFS是一种粗粒度的调整方式,CPU的工作负载情况不能完全反映CPU是否需要调频调压的真正需求。
发明内容
[0005] 本发明
实施例提供了动态电压频率调整DVFS的系统及方法,能够根据CPU的核阻塞(Core Bound,CB)系数对CPU进行DVFS。
[0006] 第一方面,本发明实施例提供了一种DVFS的系统,包括:性能监测单元,用于确定中央处理器CPU当前的第一核阻塞CB系数,并根据所述第一CB系数确定第一变化量,其中,所述第一CB系数表示所述CPU中的
算术逻辑单元(Arithmetic Logic Unit,ALU)当前的处理能
力的性能
瓶颈;策略控制单元,用于根据所述性能监测单元确定的所述第一变化量,调整所述CPU的工作频率和工作电压。
[0007] 本发明实施例根据CPU的CB系数的变化量,判断是否需要对CPU进行动态电压频率调整,因而能够更加精细的控制DVFS过程,避免造成的不必要的调整,在保证CPU系统性能的基础上实现对CPU功耗的精细化管理。
[0008] 在一种可能的实现方式中,所述根据所述第一CB系数确定第一变化量,包括:根据所述第一CB系数与当前存储的第二CB系数确定所述第一变化量,其中,所述第一变化量为所述第一CB系数与所述第二CB系数的差值或比值,所述第二CB系数为上次DVFS时的CB系数。
[0009] 在一种可能的实现方式中,当所述第一变化量为所述第一CB系数与所述第二CB系数的差值时,所述策略控制单元具体用于:当所述第一变化量大于或等于第一
阈值时,提高所述CPU的工作电压和工作频率,其中,所述第一阈值为正数;当所述第一变化量小于或等于第二阈值时,降低所述CPU的工作频率和工作电压,其中,所述第二阈值为负数。
[0010] 这时,还可以先判断该第一变化量是否大于0,当该第一变化量大于0并且大于第一阈值时,提高所述CPU的工作电压和工作频率。当该第一变化量小于0并且小于第二阈值时,降低所述CPU的工作频率和工作电压。
[0011] 在一种可能的实现方式中,当所述第一变化量为所述第一CB系数与所述第二CB系数的比值时,所述策略控制单元具体用于:当所述第一变化量大于或等于第三阈值时,提高所述CPU的工作电压和工作频率,其中,所述第三阈值大于1;当所述第一变化量小于或等于第四阈值时,降低所述CPU的工作频率和工作电压,其中,所述第四阈值的取值范围为0至1。
[0012] 这时,还可以先判断该第一变化量是否大于1,当该第一变化量大于1并且大于第三阈值时,提高所述CPU的工作电压和工作频率。当该第一变化量小于1并且小于第四阈值时,降低所述CPU的工作频率和工作电压。
[0013] 在一种可能的实现方式中,所述CPU包括至少两个ALU单元,所述性能监测单元具体用于:确定所述至少两个ALU单元中的每个ALU单元当前的性能参数;确定所述第一CB系数,所述第一CB系数为所述至少两个ALU单元的所述性能参数之和。
[0014] 在一种可能的实现方式中,所述性能监测单元确定所述至少两个ALU单元中的每个ALU单元当前的性能参数,包括:确定所述至少两个ALU单元中的每个ALU单元单位时间内被阻塞的指令数;计算所述每个ALU单元的所述指令数与所述每个ALU单元在所述单位时间内执行的所有指令的数量的比值。
[0015] 在一种可能的实现方式中,所述性能监测单元确定所述至少两个ALU单元中的每个ALU单元当前的性能参数,包括:确定所述至少两个ALU单元中的每个ALU单元在单位时间内浪费的时钟周期数;计算所述每个ALU单元的所述时钟周期数与所述每个ALU单元在所述单位时间对应的所有时钟周期数的比值。
[0016] 在一种可能的实现方式中,其特征在于,所述性能监测单元还用于:将所述第二CB系数替换为所述第一CB系数。
[0017] 这样,在计算CB变化量时,能够实时根据当前的CB系数和上次DVFS时的CB系数,确定CBR或者ΔCBR。
[0018] 在一种可能的实现方式中,所述系统还包括:工作负载监测单元,用于确定所述CPU当前的工作负载相对第二时刻的工作负载的第二变化量;所述性能检测单元用于在所述第二变化量大于第五阈值时确定所述第一变化量。
[0019] 第二方面,提供了一种DVFS的方法,包括确定中央处理器CPU当前的第一核阻塞CB系数,其中,所述第一CB系数表示所述CPU中的算术逻辑单元ALU当前的处理能力的性能瓶颈;根据所述第一CB系数确定第一变化量;其中,根据所述第一变化量,调整所述CPU的工作频率和工作电压。
[0020] 第二方面的方法的各个步骤还可以参照第一方面的系统的相应模
块的各个操作,在此不再重复。
[0021] 第三方面,提供了一种计算机可读介质,用于存储
计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的指令。
附图说明
[0022] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0023] 图1是现有技术的DVFS系统的示意性架构图。
[0024] 图2是现有技术的DVFS的示意性
流程图。
[0025] 图3是本发明实施例的DVFS系统的示意性架构图。
[0026] 图4是本发明实施例的DVFS系统确定核阻塞系数的示意性流程图。
[0027] 图5是本发明实施例的DVFS的示意性流程图。
具体实施方式
[0028] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0029] 图1是现有技术的DVFS的系统架构图。该系统包括应用2000、DVFS单元3000、电源管理单元4000和CPU 5000四大部分。其中,应用2000和DVFS单元3000为软件部分,电源管理单元4000和CPU 5000为硬件部分。
[0030] 这里,应用2000为上层
应用软件。DVFS单元3000包括调度管理单元3100、工作负载监测单元(Workload Monitor Unit,WMU)3200、策略控制单元3300和DVFS驱动3400。调度管理单元3100对CPU执行应用2000时的多个
进程进行调度和管理。
[0031] WMU 3200用于根据调度管理单元3100实时监测CPU的工作负载(workload,WL)。当CPU的工作负载变化时,WMU将计算出CPU当前的工作负载和上次DVFS时的工作负载的变化量(ΔWL)。
[0032] 图1中的DVFS系统是否需要进行DVFS的依据是CPU的工作负载。针对不同的工作负载,为CPU设置不同的工作电压和工作频率。图2示出了图1中的策略控制单元进行DVFS调制的示意性流程图。图1所示的DVFS方法包括:
[0033] S101,获取工作负载监测单元确定的工作负载的变化量ΔWL。
[0034] S102,判断ΔWL是否大于预设置的工作负载阈值。当ΔWL大于该阈值时,下一步执行S103。当ΔWL小于或等于该阈值时,流程结束。
[0035] S103,调整CPU的工作电压或频率。
[0036] 但是,上述图1或图2描述的DVFS是针对CPU的工作负载进行DVFS,这是是一种粗粒度的调整方式,CPU的工作负载情况不能完全反映CPU是否需要调频调压的真正需求。
[0037] 图3是本发明实施例的DVFS的系统架构图。该系统包括应用2000、DVFS单元3000、电源管理单元4000和CPU 5000四大部分。其中,应用2000、电源管理单元4000和CPU 5000与图1所示的系统架构图中的相应部分相同。
[0038] 图3中的DVFS单元3000包括调度管理单元3100、工作负载监测单元WMU 3200、策略控制单元3300、DVFS驱动3400、性能监测单元(Performance Monitor Unit,PMU)3500和CPU驱动3600。其中,策略控制单元3300和PMU 3500为本发明基于传统的DVFS的系统架构新增加的部分。
[0039] PMU 3500用于实时计算CPU的核阻塞(Core Bound,CB)系数以及CPU当前的CB系数与上次DVFS时的CB系数的变化量。
[0040] CPU的微架构的处理能力和处理效率能够准确地反映CPU核的整体性能。CPU的CB系数对CPU的指令分发、ALU各部分性能进行量化,反映ALU的性能瓶颈对系统整体性能的影响,即反映CPU在相应的电压和频率下进行算数运算和逻辑处理的真实能力,与运算的硬件资源或指令的先后有依赖关系。对同一个CPU,提高CPU的电压和频率值可以降低CB系数。
[0041] CPU的内存阻塞(Memory Bound,MB)能够对高速缓存(cache)的命中率、
访问时延等性能指标进行量化。CPU微架构中的ALU单元在运算过程中需要对内存进行读写访问。提高CPU的工作电压和频率对于改善MB导致的性能下降基本是无效的。
[0042] 图4示出了本发明实施例的PMU 3500确定CB变化量的示意性流程图。PMU 3500可以通过周期或非周期的方式不间断的计算CB系数和CB系数的变化量,该变化量例如为核阻塞率(Core Bound Rate,CBR)。例如,PMU3500可以设置周期为0.2ms,在每0.2ms计算当前的CB系数。
[0043] S201,确定CPU中每个ALU单元当前的性能参数。
[0044] 具体的,CPU驱动3600通过软件实现对CPU 5000的驱动,并获取CPU运行时的各个ALU单元的性能信息,将获取的性能信息发送给PMU 3500。
[0045] CPU中可以包括多个ALU单元,多个ALU单元中的每个ALU单元分别具有各自的性能信息Pi,例如第一个ALU单元的性能信息为P1,第二个ALU单元的性能信息为P2,第i个ALU单元的性能信息为Pi。性能信息P能够反映每个ALU单元性能瓶颈的信息,例如可以为每个ALU单元在单位时间内被阻塞的指令数,或者单位时间内被阻塞的时钟周期数等。
[0046] 本发明实施例中,当PMU获取的性能信息为每个ALU单元在单位时间内被阻塞的指令数时,一个ALU单元的性能参数为该ALU单元的单位时间内被阻塞的指令数与该ALU单元的单位时间内执行的所有指令的数量的比值。
[0047] 或者,当PMU获取的性能信息为每个ALU单元在单位时间内被阻塞的时钟周期数时,一个ALU单元的性能参数为该ALU单元的单位时间内被阻塞的时钟周期数与该ALU单元的单位时间对应的所有时钟周期数的比值。
[0048] S202,计算当前CB系数。
[0049] 具体的,当CPU中包含一个ALU单元时,该CB系数为该ALU的性能参数。当CPU中包含至少两个ALU单元时,该CB系数可以为S201中多个ALU单元的性能参数之和。
[0050] 例如,CPU中具有n个ALU单元,第一个ALU单元的性能参数为B1,第二个ALU单元的性能参数为B2,第i个ALU单元的性能参数为Bi,第n个ALU单元的性能信息为Bn,则当前的CB系数可以根据下面公式进行计算:
[0051] CB=B1+B2+…+Bi+…+Bn (1)
[0052] S203,根据当前的CB系数计算CB系数变化量CBR或ΔCBR。
[0053] PMU 3500根据S202中确定的性能参数,计算CPU的当前的CB系数相对于上次DVFS之后的CB系数的变化量,上次DVFS之后的CB系数的变化量可以预存储在该性能监测单元中。
[0054] CBR的值为CPU负载变化后的CB的值(CBafter)与上次DVFS之后的CB的值(CBbefore)的比值,即
[0055] CBR=CBafter/CBbefore (2)
[0056] 这里,CBafter也就是为当前时刻通过S202确定的CB的值。
[0057] 另外,ΔCBR的值为CBafter与CBbefore的差值,即
[0058] ΔCBR=CBafter-CBbefore (3)
[0059] 在本发明实施例中,当PMU第一次确定CBR或ΔCBR时,可以在PMU中预存储CBbefore的值。预存储的CBbefore的值可以根据经验值设置。或者,当PMU第一次确定CB系数的值之后,将该CB系数缓存起来。在PMU下一次确定CB系数之后,将之前缓存的CB系数作为CBbefore来计算CB的变化量,即计算CBR或ΔCBR。
[0060] 在本发明实施例中,在策略控制单元调整CPU的工作频率和工作电压之后,PMU还用于将PMU中存储的CBbefore系数替换为调整CPU的工作频率和工作电压时的CB系数。这样,在PMU计算CB变化量时,能够实时根据当前的CB系数和上次DVFS时的CB系数,确定CBR或者ΔCBR。
[0061] 本发明实施例中,作为一例,策略控制单元3300用于根据性能监测单元3500确定的CBR或ΔCBR确定是否对CPU进行DVFS。作为另一例,策略控制单元3300还可以根据工作负载监测单元3200确定的工作负载的变化量和性能监测单元3500确定的CBR或ΔCBR两个指标来确定是否对CPU进行DVFS。
[0062] 图5示出了本发明实施例的策略控制单元3300根据工作负载变化量和CB的变化量进行DVFS的方法300的示意性流程图。该方法包括:
[0063] S301,获取WMU 3200确定的工作负载的变化量(ΔWL)。
[0064] 具体的,策略控制单元3300可以实时获取WMU 3200确定的工作负载的变化量,获取工作负载变化量的周期可以大于或等于WMU 3200计算工作负载变化量的周期。
[0065] S302,判断ΔWL是否大于第一阈值。
[0066] 这里,第一阈值为预先设置的工作负载的阈值。当ΔWL大于第一阈值时,下一步执行S203,根据性能监测单元确定的CB的变化量继续判断。当ΔWL小于或等于第一阈值时,流程结束,即不对CPU的工作电压和工作频率进行调整。
[0067] S303,获取PMU 3500确定的CB的变化量(CBR或ΔCBR)。
[0068] 具体的,策略控制单元3300可以实时获取PMU 3500确定的CB的变化量,获取CB的变化量的周期可以大于或等于PMU 3500确定的CB的变化量的周期。
[0069] S304,当前CB相比上次DVFS时的CB是否增大,即判断CBR是否大于1或者判断ΔCBR是否大于0。
[0070] 如果CBR大于1或ΔCBR大于0,则CBafter大于CBbefore,当前的CB系数相对应上次DVFS时的CB系数变大。此时下一步可以执行S305,判断CB的变化量是否超过第二阈值。
[0071] 如果CBR小于1或ΔCBR小于0,则CBafter小于CBbefore,当前的CB系数相对应上次DVFS时的CB系数变小。此时下一步可以执行S206。
[0072] 如果CBR等于1或ΔCBR等于0,则CBafter等于CBbefore,当前的CB系数相对应上次DVFS调制不变,流程可以结束。
[0073] 应注意,本发明实施例中,也可以不执行S304。这样,在S303执行之后,下一步可以执行S305。
[0074] S305,判断CB的变化量是否大于或等于第二阈值。当CB的变化量大于或等于第二阈值时,下一步执行S307。
[0075] 当上一步执行的步骤为S304时,当CB的变化量小于第二阈值时,流程结束,不对CPU的工作电压或者工作频率进行调整。
[0076] 这时,经过S304的判断,可以确定CBR大于1或ΔCBR大于0,即CBafter大于CBbefore。此时可以进一步判断:
[0077] CBR≥(1+CBRup)或者ΔCBR≥CBbefore×CBRup (4)
[0078] 是否成立,这里,可以认为当CB的变化量为CBR时,该第二阈值为1+CBRup,当CB的变化量为ΔCBR时,该第二阈值为CBbefore×CBRup,CBbefore×CBRup的值为正数。
[0079] 当(4)成立时,下一步执行S307。当(4)不成立时,流程结束。
[0080] 应注意,在S305中,当CBRup取值为1时,表示CPU的CB系数是上次DVFS时的两倍。如果此时(4)成立,则表示在当前CB系数大于上次DVFS时的两倍之后才进行调频调压。而在实际应用中,为了实现细粒度的控制,应该设置CBRup的值为大于0并且小于1。
[0081] 当上一步执行的步骤为S303时,当CB的变化量小于第二阈值时,下一步执行S306。
[0082] S306,判断CB的变化量是否小于或等于第三阈值。当CB的变化量大于或等于第三阈值时,下一步执行S307。当CB的变化量小于第三阈值时,流程结束,不对CPU的工作电压或者工作频率进行调整。
[0083] 当上一步执行步骤S304时,经过S304的判断,可以确定CBR小于1或ΔCBR小于0,即CBafter小于CBbefore。
[0084] 当上一步执行的步骤为S305时,此时已经确定不对CPU进行升频升压操作,因此此时可以继续判断是否需要对CPU进行降频降压处理。
[0085] 在S306中,可以判断:
[0086] CBR≤(1-CBRdown)或者ΔCBR≤-CBbefore×CBRdown (5)
[0087] 是否成立,这里,可以认为当CB的变化量为CBR时,该第三阈值为1-CBRdown,1-CBRdown的取值范围为0至1。当CB的变化量为ΔCBR时,该第三阈值为-CBbefore×CBRdown,这里-CBbefore×CBRdown为负数。
[0088] 当(5)成立时,下一步执行S307,当(5)不成立时,流程结束。
[0089] 应注意,在S306中,当CBRdown大于或者等于1时,(1-CBRdown)为一个负数。因为CBR的取值为正数,因此(5)不可能成立。因而在实际应用中,为了实现对CPU的工作频率和工作电压的控制,应该设置CBRdown的值大于0并且小于1。
[0090] S307,调整CPU的工作电压和工作频率。策略控制单元3300可以通过DVFS驱动3400控制电源管理单元4000对CPU的频率和电源进行控制。
[0091] 具体的,当流程从S305执行到S307时,需要进行升频升压调整。当流程从S306执行到S307时,需要进行降频降压调整。
[0092] 在确定需要升频升压调整时,策略控制单元可以控制CPU电源管理单元中的电源管理模块对CPU的工作电压进行调整,然后控制CPU电源管理单元中的频率管理模块对CPU的工作频率进行调整。
[0093] 作为一例,可以配置调整的电压步长为V1。这时,调整后的工作电压可以为上次DVFS后的工作电压与(1+V1)的乘积,即:
[0094] Vafter=Vbefore×(1+V1) (6)
[0095] 在调整完CPU的工作电压之后,对CPU的工作频率进行调整。例如,可以配置调整的频率步长为F1。这时,调整后的工作频率可以为上次DVFS后的工作频率与(1+F1)的乘积,即:
[0096] Fafter=Fbefore×(1+F1) (7)
[0097] 这里,为了实现更细粒度的控制,可以设置V1和F1的取值范围。例如当V1大于0并且小于1时,本次DVFS后的电压Vafter小于上次DVFS后的电压Vbefore的两倍。例如当F1大于0并且小于1时,本次DVFS后的频率Fafter小于上次DVFS后的频率Fbefore的两倍。
[0098] 在确定需要降频降压调整时,策略控制单元可以控制CPU电源管理单元中的频率管理模块对CPU的工作频率进行调整,然后控制CPU电源管理单元中的电源管理模块对CPU的工作电压进行调整。
[0099] 作为一例,可以配置调整的频率步长为F2。这时,调整后的工作频率可以为上次DVFS后的工作频率与(1-F2)的乘积,即:
[0100] Fafter=Fbefore×(1-F2) (8)
[0101] 在调整完CPU的工作频率之后,对CPU的工作电压进行调整。例如,可以配置调整的电源步长为V2。这时,调整后的工作电压可以为上次DVFS后的工作电压与(1-V2)的乘积,即:
[0102] Vafter=Vbefore×(1-V2) (9)
[0103] 这里,同样可以设置V2和F2的取值范围。例如,可以设置V2和F2大于0或者小于0.5,这样每次调整的工作电压或工作频率的幅度不会超过上次DVFS后的工作频率或者工作电压的一半。
[0104] 应注意,在本发明实施例中,不执行S301和S302对应的流程也可以对CPU进行DVFS,即在根据CPU的CB系数的变化量判断是否要进行工作电压和频率的调整之前,不需要判断CPU的工作负载变化量是否超过阈值。
[0105] 因此,本发明实施例根据CPU的当前的CB系数相对于上次DVFS时的CB系数的变化量,判断是否需要对CPU进行动态电压频率调整,因而能够更加精细的控制DVFS过程,避免造成的不必要的调整,在保证CPU系统性能的基础上实现对CPU功耗的精细化管理。
[0106] 应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0107] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及
算法步骤,能够以
电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0108] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0109] 在本
申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些
接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0110] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0111] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0112] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,
服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动
硬盘、只读
存储器ROM、
随机存取存储器RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0113] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉
本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述
权利要求的保护范围为准。