![CPU實際上從哪個記憶體讀取資料?](https://rvso.com/image/1540085/CPU%E5%AF%A6%E9%9A%9B%E4%B8%8A%E5%BE%9E%E5%93%AA%E5%80%8B%E8%A8%98%E6%86%B6%E9%AB%94%E8%AE%80%E5%8F%96%E8%B3%87%E6%96%99%EF%BC%9F.png)
答案1
CPU上的高速緩存不會儲存數據,它只是加快存取速度。
對快取最基本的解釋是,當 CPU 從 RAM 讀取特定位元組時,該資料也會被複製到快取中。下次 CPU 需要讀取該位元組時,記憶體控制器會發現該位元組位於高速緩存中,並且不會緩慢地呼叫 RAM,而是將高速緩存中的資料交給 CPU。
但這種解釋有兩個具體問題:
快取的大小是有限的。因此,當新增資料時,您最終需要刪除(或「刪除」)舊資料以為其騰出空間。有很多方法可以做到這一點,具體的方法對於本次討論並不重要,但重要的是一段時間後,資料可能不再在快取中,然後你就必須出去無論如何到主記憶體。
寫入資料時,您還需要更新或刪除先前儲存在該位址的快取中的資料。處理這個問題主要有三種方法:
- Writeback:使用writeback方法,資料先寫入快取,然後最終寫出到主記憶體。這對於性能有許多優點,但在某些情況下可能會導致問題。
- Writethrough:使用writethrough方法,資料同時寫入快取和主記憶體。這比寫回效能低,但更安全。
- Write-around:使用write-around方法,資料直接寫入主存,然後從快取中刪除相同位置的資料。除了非常具體的用例之外,很少使用這種方法。
因此,要回答有關 RAM 與 CPU 快取的問題,從技術上講,兩者都是,但幾乎在所有情況下資料最終都來自 RAM。如果您有興趣具體了解更多信息,我建議您閱讀以下兩篇維基百科文章:
https://en.wikipedia.org/wiki/Cache_(計算)
https://en.wikipedia.org/wiki/CPU_cache
現在,至於交換空間的問題,這是一個與虛擬記憶體和分頁相關的完全不同的概念。試圖在這裡解釋這一點將導致我撰寫維基百科文章中的大部分,因此我將直接將您指向有問題的文章: