多核系统中的节能CPU使用

时间:2014-01-29 10:22:01

标签: optimization cpu

我有一个相当理论上的问题:cpu /核心使用与能源消耗之间是否存在关联。 我试着在一个例子中解释它: 假设我们有一组任务T和一个核心C1。 C1将在10秒内完成设定T,同时使用100%。使用两个核心C1和C2并将其中的任务从它们中分离出来是否可以更加节能,因此它仍然可以在10秒内完成,但在此期间C1和C2的使用率是50%? (< - 只是一个例子,数字不是真的) 就像汽车有一定的速度,它不会浪费太多的气体(即使我知道车辆速度更像是核心频率)。 我虽然认为当一个cpu / core在100%运行时它会变温(比如说)50%,这意味着它需要更多的能量来冷却。

对于有关此主题的任何意见,我将感激不尽

欢呼声

2 个答案:

答案 0 :(得分:1)

对于CMOS电路,能量取决于开关的数量。在最基本的水平上,能量取决于总工作量,而不取决于CPU负载百分比。

但有一些方面:

1)能量与CPU电压的平方成正比。操作系统可以使用英特尔EIST等技术降低电压,使其效率提高2 x 50%

2)无论负载如何,时钟网都消耗大量能量。操作系统可以降低频率,使2 x 50%更好

3)操作系统可以禁用非活动核心,使1 x 100%更好。但我不知道这样的技术。可能是ARM可能的。我在谷歌找不到任何东西。

2 x 50%看起来更好。

答案 1 :(得分:0)

实际上,从移动设备到HPC,这是一个非常实用和重要的问题,基本上任何计算机都必须担心在某个功率范围内运行。我会尽量不要说你的耳朵。

作为一般规则,您执行任务的速度越快越好。现代处理器中的电源管理在空闲时将内核置于休眠状态(有趣地称为Cx,其中x从1变为n)。消耗更少功率的方法是最大化核心在睡眠状态下可以花费的时间量。最好的方法是尽快完成工作。

这是一个例子:假设我们有一个带有两个内核的处理器。每个核心在执行(非空闲)时消耗大约30W。当处于空闲状态时,假设核心消耗5W。我假设不存在P状态(大多数现代处理器中的另一个电源管理功能)。让我们看看10秒的窗口。您开始在t = 0处执行应用程序。我们还假设您的应用程序受计算限制,这意味着它不会阻止I / O或其他任何内容。

案例A(确定):您的应用使用一个核心(核心-0)而另一个核心(核心-1)处于非活动状态。因此,在10秒间隔内,core-0使用30W并消耗300焦耳的能量。 (以焦耳为单位的能量=以瓦特为单位的功率*时间)。另一个核心是空闲的,只消耗5W或50J。因此总能量消耗为350 J(10秒内35W)

案例B(错误):您的应用分为两个核心,持续10秒,两者都没有空闲。然后你的总消耗量是60 W(每个核心30 W)消耗600 J.这有点差。

案例C(好):假设你做了一些智能多线程,并且可以通过在两个核心之间分配线程来快速执行你的应用程序4倍。考虑到大多数代码即使在今天也没有很好的线程,这是非常合理的。然后,对于两个内核或225焦耳,您将获得超过2.5秒的30W功率。这减少了近60%。

如果您正在处理移动电池寿命或为数据中心供电,那么能耗降低60%是一件大事。

我写了很多关于这些东西的内容,从物理到实现。如果您想了解更多信息,请查看https://software.intel.com/en-us/articles/list-of-useful-power-and-power-management-articles-blogs-and-references或使用您最喜欢的搜索引擎找到我。