當CPU需要開始RAM或結束時,延遲是否相同或者沒有區別?RAM的開始和結束之間的延遲
回答
當CPU嘗試訪問某些任意地址/範圍的物理內存時,性能沒有差別。
就CPU而言,它通過總線與內存控制器交互。 隨機存取中的值通過地址的方式檢索,而不必關心其中地址碰巧物理上位於存儲器模塊內。
如果我們假設CPU在緩存未命中後請求位於RAM中的內容,則請求的地址是x
還是x + 100
並不重要。預計時間延遲將在同一性能範圍內。
如果您要切換到基於順序訪問(例如磁帶驅動器,通常用於備份)的介質,則「開始」和「結束」位置將會很重要。
請注意,我在迴避執行操作系統(例如虛擬內存等)時進程內存視圖的主題,以及嘗試嘗試不同種類/內存量的想法並對其進行比較。換句話說,我假定一個給定的系統對於一個給定的測試具有固定數量的給定內存類型。此外,在查看內存模塊規格時,如果要避免/使用模塊中的某個地址範圍,我從未注意到任何指示某種性能損失/增益的信息。
因此,例如,CPU需要訪問RAM中的下一個地址,它將會花費與十個地址相同的時間,對嗎?我想確保它不存在任何類型的緩存或其他「快速訪問方式」,例如磁盤緩存。 – Kdmeizk
@Kdmeizk我不清楚你的意思。系統緩存數據以提高性能。該CPU有幾個級別的緩存。如果我理解你的意思是正確的,那麼假設CPU在緩存未命中後試圖訪問RAM數據,那麼它是否試圖訪問地址'x'或'x + 10'並不重要。我還假設你不是在談論它將被處理的速度,因爲流水線CPU以區塊方式獲取/處理數據,但是如果它需要其他東西(例如由於分支),那麼流水線可能需要刷新並表現出色。 – ray
「如果CPU在緩存未命中後嘗試訪問RAM數據,那麼它是否嘗試訪問地址x或x + 10_無關緊要」是的,我主要想知道這一點。儘管我的清晰度,謝謝大家的答案。 – Kdmeizk
- 1. CPU和RAM,RAM和PCIE2.0 16x設備之間的事務大小和延遲
- 2. 開始時間和結束時間之間的倒數時間
- 3. 我的時間在開始時間和結束時間之間
- 4. 選擇開始時間和結束時間之間的開始時間
- 5. 開始/結束加載的角度延遲加載事件
- 6. 延遲qClip結束
- 7. 計算開始和結束時間之間的加布數據
- 8. 如何獲得開始和結束日期之間的時間
- 9. 觸摸開始和觸摸結束之間的時間
- 10. 選擇開始和結束列之間的行(Unix時間戳)
- 11. 的開始和結束時間
- 12. 窗口的開始和結束時間
- 13. PostgreSQL的遞延約束和開始結束塊
- 14. vim中的開始和結束括號之間的複製行
- 15. 開始和結束標記之間的文本的術語?
- 16. Youtube API查詢:開始之前,開始之後,結束之前,結束之後
- 17. Android的開始日曆意圖的開始和結束時間
- 18. 計算Java中開始和結束之間的秒數?
- 19. 找到開始和結束之間的移動
- 20. javascript .addclass開始和結束之間的每個日期
- 21. doc.Content.Text和doc.Range之間的區別是什麼(開始,結束).Text
- 22. 生成開始日期和結束日期之間的日期
- 23. 開始觸發器和結束觸發器之間的GROUP行
- 24. 無法獲取開始和結束標記之間的文本
- 25. 開始標記和結束標記之間的線條
- 26. ajax請求開始和結束之間的「加載圖像」
- 27. Rails 3.1 - 在開始和結束日期之間獲取結果?
- 28. PHP的時間開始和時間結束之間的累積時間
- 29. CEPStream延遲和事件結束
- 30. 功能之間的延遲
這不是一個關於用C語言編程的問題。:)有趣的是,儘管如此。 – unwind
取決於你認爲的「RAM」。一個進程看到的「RAM」或一個盒子提供的物理「RAM」。 – alk
這取決於RAM和內存空間的結構。例如,具有L1/L2/L3 SRAM和SDRAM的處理器對於4個不同的地址區域基本上具有4個不同的延遲。此外,對於NUMA體系結構,處理器集羣訪問更接近它的內存的延遲更低。 Adapteva Epiphany/Parallella類似,並且具有線性延遲增加,這取決於處理器和內存的距離。另外,如果將GPU內存視爲RAM,則映射到主機地址空間的設備內存也會有較長的延遲。所以,延遲會有所不同,但不一定那麼簡單 – user3528438