作爲一個思想實驗,我想最大限度地提高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