Optimization 多核系统中的节能cpu使用

Optimization 多核系统中的节能cpu使用,optimization,cpu,Optimization,Cpu,我有一个相当理论化的问题:cpu/核心的使用和能耗之间是否存在关系。 我试着用一个例子来解释: 假设我们有一组任务T和一个核心C1。C1将在10秒内完成设置T,同时使用率为100%。使用两个核心C1和C2并将T中的任务分配给它们,使其在10秒内完成,但在此期间C1和C2的使用率为50%,这是否更节能?(对于CMOS电路,能量取决于开关的数量。在最基本的层面上,能量取决于总的工作量,而不是CPU负载百分比 但也有一些方面: 1) 能量和CPU电压的平方成正比。操作系统可以使用Intel EIST等

我有一个相当理论化的问题:cpu/核心的使用和能耗之间是否存在关系。 我试着用一个例子来解释:
假设我们有一组任务T和一个核心C1。C1将在10秒内完成设置T,同时使用率为100%。使用两个核心C1和C2并将T中的任务分配给它们,使其在10秒内完成,但在此期间C1和C2的使用率为50%,这是否更节能?(对于CMOS电路,能量取决于开关的数量。在最基本的层面上,能量取决于总的工作量,而不是CPU负载百分比

但也有一些方面:

1) 能量和CPU电压的平方成正比。操作系统可以使用Intel EIST等技术降低电压,使2 x 50%的性能更好

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

3) 操作系统可以禁用非活动内核,使性能提高1 x 100%。但我不知道这种技术。也许这是可能的武器。我在谷歌上什么也没找到


2 x 50%看起来更好。

事实上,这是一个非常实用且重要的问题,从手机到HPC,基本上是任何需要担心在特定电源范围内运行的计算机。我尽量不把你的耳朵扯掉

一般来说,执行任务越快越好。现代处理器中的电源管理使内核在空闲时进入休眠状态(有趣的是称为Cx,其中x从1变为n)。降低功耗的方法是最大限度地延长内核在睡眠状态下的时间。最好的办法是尽快完成工作

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

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

案例B(坏):你的应用程序在两个核心上分裂10秒,两个核心都没有空闲。那么你的总消耗量是60瓦(每芯30瓦),消耗600焦耳。这是相当糟糕的

案例C(好):假设你做了一些智能多线程,通过在两个内核之间分配线程,你的应用程序执行速度可以提高4倍。这是相当合理的,因为即使在今天,大多数代码的线程都很糟糕。然后,两个磁芯在2.5秒内都得到30W,或225焦耳。这几乎减少了60%

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


我写了很多关于这方面的东西,从物理到实现。如果您想了解更多信息,请查看或使用您最喜欢的搜索引擎来查找我。

非常感谢您的回答