作为一个思想实验,我想最大限度地提高CPU的功耗。 (即效率最低的CPU使用率)。显然这是一个特定处理器,但我希望有一些准则适用于所有处理器。如何最大限度地提高CPU的功耗?
简单的解决方案可能是产卵一堆运行一个简单的循环,它的线程:
static int count = 0;
while(true)
{
++count;
}
但这些不会必然用最耗电的指令,或访问内存,或许多寄存器,或者打高速缓存,它会在每个周期执行一些事情。
想法?
作为一个思想实验,我想最大限度地提高CPU的功耗。 (即效率最低的CPU使用率)。显然这是一个特定处理器,但我希望有一些准则适用于所有处理器。如何最大限度地提高CPU的功耗?
简单的解决方案可能是产卵一堆运行一个简单的循环,它的线程:
static int count = 0;
while(true)
{
++count;
}
但这些不会必然用最耗电的指令,或访问内存,或许多寄存器,或者打高速缓存,它会在每个周期执行一些事情。
想法?
忘掉外围设备和内存。与处理器相比,它们的功耗很小。而且它们的使用速度很慢,这意味着处理器在等待时可能会进入静止状态(功耗较低)。
使处理器功耗最大化与优化CPU绑定应用程序的执行基本相同。看看那些想要让自己的处理器看起来像切片面包以来最棒的公司设计的基准。 (需要我提及谁我说?)
不同意“忘记记忆”。如果你做得对,你应该能够保持L1和L2高速缓存的繁忙,而不会减慢CPU的速度,这并不是可以忽略不计的大门。 – sh1
你可能是对的。我认为L1的潜伏期约为7个周期,L2为约15个周期。目前核心的优异CPI可能<.25(意思是每个周期4次)。所以如果你能保持低CPI,使用矢量化,并且练习L1和L2(意思是没有管道延迟),那么你有一个理想的情况。 –
不知道当你要求别人为你做思想时,这是如何算作一个*想法实验* –
我猜你可以叉炸弹和忙碌循环? – PhotometricStereo