CPU實際上從哪個記憶體讀取資料?

CPU實際上從哪個記憶體讀取資料?

依照我自己的理解,對於CPU要處理的數據,應該放在記憶體,同時CPU本身有快取記憶體,也用於存取資料。眾所周知,CPU 快取比任何其他類型的記憶體都「更接近」CPU,並且速度更快。但我有點不清楚,資料是否必須在CPU快取中才能處理?如果是的話,快取如何保存大量資料? (與 RAM 相比,快取大小往往很小,最多幾 mb,通常小於 1)如果不是,CPU 如何決定將哪部分資料保存在快取中?

我對交換也有點困惑。 CPU 可以將其視為 RAM 的一部分並直接從 HDD 尋址保存在那裡的資料嗎?

答案1

CPU上的高速緩存不會儲存數據,它只是加快存取速度。

對快取最基本的解釋是,當 CPU 從 RAM 讀取特定位元組時,該資料也會被複製到快取中。下次 CPU 需要讀取該位元組時,記憶體控制器會發現該位元組位於高速緩存中,並且不會緩慢地呼叫 RAM,而是將高速緩存中的資料交給 CPU。

但這種解釋有兩個具體問題:

  1. 快取的大小是有限的。因此,當新增資料時,您最終需要刪除(或「刪除」)舊資料以為其騰出空間。有很多方法可以做到這一點,具體的方法對於本次討論並不重要,但重要的是一段時間後,資料可能不再在快取中,然後你就必須出去無論如何到主記憶體。

  2. 寫入資料時,您還需要更新或刪除先前儲存在該位址的快取中的資料。處理這個問題主要有三種方法:

    • Writeback:使用writeback方法,資料先寫入快取,然後最終寫出到主記憶體。這對於性能有許多優點,但在某些情況下可能會導致問題。
    • Writethrough:使用writethrough方法,資料同時寫入快取和主記憶體。這比寫回效能低,但更安全。
    • Write-around:使用write-around方法,資料直接寫入主存,然後從快取中刪除相同位置的資料。除了非常具體的用例之外,很少使用這種方法。

因此,要回答有關 RAM 與 CPU 快取的問題,從技術上講,兩者都是,但幾乎在所有情況下資料最終都來自 RAM。如果您有興趣具體了解更多信息,我建議您閱讀以下兩篇維基百科文章:

https://en.wikipedia.org/wiki/Cache_(計算)

https://en.wikipedia.org/wiki/CPU_cache

現在,至於交換空間的問題,這是一個與虛擬記憶體和分頁相關的完全不同的概念。試圖在這裡解釋這一點將導致​​我撰寫維基百科文章中的大部分,因此我將直接將您指向有問題的文章:

https://en.wikipedia.org/wiki/Virtual_memory

https://en.wikipedia.org/wiki/Paging

相關內容