2011-12-13 47 views
1

如果我將值寫入內存,而不是再次讀取它們,如果內存位置不連續,是否會對性能產生影響? (即不在寫入緩存中)內存區域是否適合寫入?

當處理器有機會或者會導致緩存問題時,處理器能否將它們寫入內存中?

回答

3

CPU中的大多數緩存都熟悉的回寫,即寫入不傳播到存儲器層次結構的下一層,直到有爭用高速緩存空間,東西已經被刷新。如果您只進行一次隨機寫入,則不太可能看到任何性能影響,但如果持續進行隨機寫入,則會發現其性能將顯着低於順序寫入。

製作一個隨機寫入很可能需要一個高速緩存行的分配,因爲這很可能是該內存段訪問的唯一的事情。一旦寫足夠了,你就會用數據緩存填充數據緩存,每行包含一個有效的單詞,並且其中一行必須被刷新。因爲途中存儲器被組織和存取,即沖洗不會比沖洗整行快得多,使得該隨機寫入爲約順序寫入的相同的速度的32字節(典型的線路尺寸)。

我會建議編寫自己的程序來測試這個。分配比您的最後一級緩存大得多的內存,並分配相同數量的隨機和順序32位寫入。我敢打賭,你會發現隨機寫入速度在1/8和1/4之間,與順序寫入速度一樣快。

的另一個因素,因爲你是隨機寫入到不訪問內存等計算的相對平衡。如果它們很罕見,是的,它們會在後臺被沖刷得很多。只有當它們成爲瓶頸時,纔會注意到性能影響。連續寫入也會發生同樣的問題,但並不嚴重。