2017-07-06 26 views
-1

由於CPU的內存速度要慢得多,所以它應該以一些'x'Bytes的塊爲單位發送數據。一次調用多少數據將從內存傳輸到CPU

  1. 這個'x'的大小是多少?
  2. 數據線b/n內存和CPU是否也是x * 8位通道?
  3. 如果我訪問內存上的地址'A',它是否會將所有下一個x-1內存地址發送到緩存?
  4. 內存總線的工作頻率是多少?
  5. SIMD - SSE和MMX擴展是否利用這種批量閱讀功能?

請隨時提供任何參考。

在此先感謝。

回答

1
  1. 大小'x'通常是緩存行的大小。緩存行大小取決於體系結構,但Intel和AMD使用64字節。

  2. 至少。如果您擁有更多頻道,則可以從不同頻道獲取更多數據。

  3. 不完全是下一個x-1內存地址。你可以把內存分成64個字節的塊。每次你想訪問一個字節時,你都會帶上你的地址所屬的塊。讓我們假設你想訪問地址123(十進制)。地址的開頭應該是64到127.所以,你會帶來整個大塊。這意味着,您不僅可以帶來以下地址,還可以使用以前的地址,具體取決於您訪問的地址。

  4. 這取決於CPU支持的DDR版本。你可以在這裏檢查一些數字:https://en.wikipedia.org/wiki/Double_data_rate

  5. 是的,他們這樣做。當您將內存中的數據帶入緩存時,您將攜帶一條緩存行,並且SIMD擴展在單條指令中的多個數據元素上工作。這意味着如果你想在一條指令中增加4個值,你正在尋找的數據將在緩存中(因爲你帶了整個塊),並且你只是從緩存中讀取數據。

+0

非常感謝@ParallelHighway。你知道有什麼好的資源,我可以得到這些現代CPU的信息嗎? – user3236898

+0

[鏈接](http://www.agner.org/optimize/microarchitecture.pdf)中有許多代CPU的許多信息。您可能需要檢查與高速緩存和內存訪問相關的部分。 –

相關問題