2016-09-25 29 views
1

當CPU需要開始RAM或結束時,延遲是否相同或者沒有區別?RAM的開始和結束之間的延遲

+1

這不是一個關於用C語言編程的問題。:)有趣的是,儘管如此。 – unwind

+0

取決於你認爲的「RAM」。一個進程看到的「RAM」或一個盒子提供的物理「RAM」。 – alk

+0

這取決於RAM和內存空間的結構。例如,具有L1/L2/L3 SRAM和SDRAM的處理器對於4個不同的地址區域基本上具有4個不同的延遲。此外,對於NUMA體系結構,處理器集羣訪問更接近它的內存的延遲更低。 Adapteva Epiphany/Parallella類似,並且具有線性延遲增加,這取決於處理器和內存的距離。另外,如果將GPU內存視爲RAM,則映射到主機地址空間的設備內存也會有較長的延遲。所以,延遲會有所不同,但不一定那麼簡單 – user3528438

回答

0

當CPU嘗試訪問某些任意地址/範圍的物理內存時,性能沒有差別。

就CPU而言,它通過總線與內存控制器交互。 隨機存取中的值通過地址的方式檢索,而不必關心其中地址碰巧物理上位於存儲器模塊內。

如果我們假設CPU在緩存未命中後請求位於RAM中的內容,則請求的地址是x還是x + 100並不重要。預計時間延遲將在同一性能範圍內。

如果您要切換到基於順序訪問(例如磁帶驅動器,通常用於備份)的介質,則「開始」和「結束」位置將會很重要。

請注意,我在迴避執行操作系統(例如虛擬內存等)時進程內存視圖的主題,以及嘗試嘗試不同種類/內存量的想法並對其進行比較。換句話說,我假定一個給定的系統對於一個給定的測試具有固定數量的給定內存類型。此外,在查看內存模塊規格時,如果要避免/使用模塊中的某個地址範圍,我從未注意到任何指示某種性能損失/增益的信息。

+0

因此,例如,CPU需要訪問RAM中的下一個地址,它將會花費與十個地址相同的時間,對嗎?我想確保它不存在任何類型的緩存或其他「快速訪問方式」,例如磁盤緩存。 – Kdmeizk

+0

@Kdmeizk我不清楚你的意思。系統緩存數據以提高性能。該CPU有幾個級別的緩存。如果我理解你的意思是正確的,那麼假設CPU在緩存未命中後試圖訪問RAM數據,那麼它是否試圖訪問地址'x'或'x + 10'並不重要。我還假設你不是在談論它將被處理的速度,因爲流水線CPU以區塊方式獲取/處理數據,但是如果它需要其他東西(例如由於分支),那麼流水線可能需要刷新並表現出色。 – ray

+0

「如果CPU在緩存未命中後嘗試訪問RAM數據,那麼它是否嘗試訪問地址x或x + 10_無關緊要」是的,我主要想知道這一點。儘管我的清晰度,謝謝大家的答案。 – Kdmeizk

相關問題