在L1、L2快取和DRAM中,順序存取比隨機存取更快嗎?

在L1、L2快取和DRAM中,順序存取比隨機存取更快嗎?

在 L1、L2 快取和 DRAM 中,由於可以建立預讀,所以順序存取是否比隨機存取更快?我知道在 HDD 中這當然要快幾個數量級。

答案1

是的,有些相同但不完全相同。

根據處理器的手冊:-)
http://www.intel.com/content/dam/doc/manual/64-ia-32-architectures-optimization-manual.pdf

有特定的硬體預取,程式設計師可以告訴它預取,此外還有一些方法可以在資料塊大小中工作,有意識的程式設計師可以從中受益。此外,稍有不正確的相同硬體或軟體方法可能會導致預取被一遍又一遍地拋出,而且類似的事情對於不同的處理器也有所不同。

將資料移動到更高的級別,假設需要它(例如預讀),並且資料在那裡是因為它在移動到這些級別的區塊大小範圍內(順序可能會有所幫助)。
處理器知道它在其中引用了什麼指令集,或者它要執行的操作列表,它會準備好資料。

2.1.5.4 資料預取 可以使用軟體預取、硬體預取或兩者的任意組合將資料推測性地載入到 L1 DCache。 。 。 。

--

Streamer:此預取器監視來自 L1 快取的讀取請求,以了解位址的升序和降序序列。受監控的讀取請求包括由載入和儲存操作以及硬體預取器發起的 L1 DCache 請求,以及用於程式碼取得的 L1 ICache 請求。當偵測到向前或向後的請求流時,預取預期的快取行。預取的快取行必須位於同一 4K 頁。 。 。 。

--

Wide Dynamic Execution  
Smart Memory Access - prefetches data  
Branch Prediction Unit  
Instruction Fetch Unit  
Instruction PreDecode  

這個清單不勝枚舉,其中包含許多超前考慮的功能。

從連結文件的第 60 頁開始。

https://stackoverflow.com/questions/1922249/c-cache-aware-programming Stack Overflow 上有更多 PDF 鏈接,我確信那裡有更多相關資訊。

有關此內容和技術的數據太長,無法在這裡發布,而且程式設計師提供的所有「實際工作原理」也太長。不僅如此,我只是勉強去理解它。讀完這篇文章(以及程式設計師資訊)後,難怪為什麼一個軟體做幾乎相同的事情,可以比另一個軟體快50 倍,事情可以精心完成,測試和重新測試,以獲得最終的優化,或者他們可以錯過一些事情並保持正常。

&,ram 是完全隨機存取的,只有極少量的延遲,硬碟使用「Ram」進行預讀操作,且突發傳輸比從磁碟機讀取的速度快很多倍。順序性對於硬碟來說非常重要,因為磁頭移動需要時間並且不會從碟片中提取資料。磁頭到達該位置後,必須等待資料輪流出現。
透過硬碟預讀,它可能會在同一旋轉中提取數據,從而節省許多毫秒的時間。

假設 2 存在任何相似之處,這可能是一個巨大的想像力:-)。

相關內容