[英]Energy-efficient cpu usage in multi-core systems
我有一个相当理论上的问题:cpu /核心使用与能源消耗之间是否存在关联。 我试着在一个例子中解释它:假设我们有一组任务T和一个核心C1。 C1将在10秒内完成设定T,同时使用100%。 使用两个核心C1和C2并将其中的任务从它们中分离出来是否可以更加节能,因此它仍然可以在10秒内完成,但在此期间C1和C2的使用率是50%? (< - 只是一个例子,数字不是真实的)就像汽车有一定的速度,它不会浪费太多气体(即使我知道车辆速度更像是核心频率)。 我虽然认为当一个cpu / core运行在100%时会变热(比如说)50%,这意味着它需要更多的能量来进行冷却。
如果对此主题有任何意见,我将不胜感激
干杯
对于CMOS电路,能量取决于开关的数量。 在最基本的级别,能量取决于总工作量,而不取决于CPU负载百分比。
但是有一些方面:
1)能量与CPU电压的平方成正比。 操作系统可以使用英特尔EIST等技术降低电压,使2 x 50%更好
2)无论负载如何,时钟网都消耗大量能量。 操作系统可以降低频率,使2 x 50%更好
3)操作系统可以禁用非活动核心,使1 x 100%更好。 但我不知道这样的技术。 可能是ARM可能的。 我没有在谷歌找到任何东西。
2 x 50%看起来更好。
实际上,从移动设备到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或使用你最喜欢的搜索引擎找到我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.