緩存內存與虛擬內存
緩存內存和虛擬內存的區別在於它們的用途和物理存在。高速緩衝存儲器是一種用來提高主存存取時間的存儲器。它位於CPU和主內存之間,可以有多個級別的緩存,如L1、L2和L3。用於高速緩存的硬件類型比用於主存的RAM(隨機存取存儲器)要貴得多,因為高速緩存要快得多。因此,高速緩存的容量非常小。虛擬內存是一種內存管理技術,用於有效地使用RAM(主內存),同時為每個程序提供比實際物理RAM(主內存)容量更大的單獨內存空間。這裡的硬盤是用來擴展內存的。物理RAM中的項目與硬盤來回傳輸。
什麼是高速緩存(cache memory)?
高速緩存是一種介於CPU(中央處理器)和RAM(隨機存取存儲器)之間的存儲器。緩存的目的是減少CPU從RAM訪問內存的時間。高速緩存比RAM快得多。所以緩存上的訪問時間遠小於RAM上的訪問時間。但是用於高速緩存的內存成本遠遠高於用於RAM的內存成本,因此,緩存的容量非常小。用於高速緩存的內存類型稱為SRAM(靜態隨機存取存儲器)。
每當CPU想要訪問內存時,它首先檢查它所需要的是否駐留在緩存內存中。如果是,它將能夠以最小的延遲訪問它。如果它不駐留在緩存中,那麼請求的內容將從RAM複製到緩存,然後只有CPU從緩存訪問它。在這裡,當從緩存複製內容時,不僅要將請求的內存地址中的內容,而且要將附近的內容複製到緩存中。因此,下一次發生緩存命中的概率很高,因為大多數計算機程序都會訪問附近的數據或上次訪問的數據。因此,由於緩存,平均內存延遲減少了。
在CPU中,有三種類型的緩存:用於存儲程序指令的指令緩存、用於存儲數據項的數據緩存和用於存儲內存映射的轉換查找緩衝區。對於數據緩存,通常有多級緩存。也就是說,有幾個緩存,如L1、L2和L3。一級緩存是最快但最小的最接近CPU的緩存。二級緩存比一級緩存慢,但比一級緩存大,駐留在一級緩存之後。由於這種層次結構,可以以更低的成本獲得更好的平均內存訪問時間。
什麼是虛擬內存(virtual memory)?
虛擬內存是計算機系統中使用的一種內存管理技術。沒有硬件稱為虛擬內存,但它是一個概念,使用RAM和硬盤為程序提供虛擬地址空間。第一個RAM被分成稱為頁的塊,它們由物理內存地址標識。在硬盤中,保留了一個特殊的部分,在Linux中稱為交換,在Windows中稱為頁文件。當一個程序啟動時,它會得到一個比實際物理內存還要大的虛擬地址空間。虛擬內存空間也被分成稱為頁的塊,每個虛擬內存頁都可以映射到一個物理頁。名為pagetable的表跟蹤這個映射。當物理內存空間不足時,所做的是,將某些物理頁推送到硬盤中的特定部分。當再次需要將任何頁面推送到硬盤時,通過將另一個選定頁面從物理內存放入硬盤,將其帶到物理內存中。
高速緩存(cache memory)和虛擬內存(virtual memory)的區別
•緩存是一種用於提高主內存訪問時間的內存類型。它是一種更快的內存類型,駐留在CPU和RAM之間,以減少平均內存訪問延遲。虛擬內存是一種內存管理方法,它是一種讓程序獲得自己的虛擬內存空間的概念,它甚至比可用的實際物理RAM還要大。
•緩存是一種實際存在的硬件內存。另一方面,沒有硬件稱為虛擬內存,因為它是一個概念,使用RAM、硬盤、內存管理單元和軟件來提供虛擬類型的內存。
•緩存管理完全由硬件完成。虛擬內存由操作系統(軟件)管理。
•緩存位於RAM和處理器之間。數據傳輸包括RAM、高速緩存和處理器。另一方面,虛擬內存涉及RAM和硬盤之間的數據傳輸。
•緩存的大小很小,如千字節和兆字節。另一方面,虛擬內存的容量巨大,需要千兆字節。
•虛擬內存涉及存儲物理內存和虛擬內存之間映射的頁表等數據結構。但是這種類型的數據結構對於高速緩存是不必要的。
小結:
緩存內存與虛擬內存
緩存內存用於提高主內存訪問時間,而虛擬內存是一種內存管理方法。緩存內存是一個實際的硬件,但沒有稱為虛擬內存的硬件。RAM、硬盤和各種其他硬件以及操作系統一起產生了一個稱為虛擬內存的概念,為每個程序提供大而獨立的虛擬內存空間。緩存內存中的內容由硬件管理,而虛擬內存中的內容由操作系統管理。
- Hellisp的緩存進程(CC by-SA 3.0)
- Ehamberg的虛擬內存(CC by-SA 3.0)