由於緩存經常使用RAM(斷電後可立即丟失的非永久存儲),文件用完後仍會被發送到硬盤等內存中永久存儲。電腦中最大的緩存是內存條,最快的是CPU內嵌的L1和L2緩存,顯卡的顯存用於顯卡的計算芯片,硬盤上也有16M或32M的緩存。
特性
緩存是指能夠高速交換數據的內存。它在內存之前和CPU交換數據,所以速度很快。L1緩存是CPU的第壹層緩存。內置L1緩存的容量和結構對CPU的性能影響很大。然而,高速緩沖存儲器都是由靜態RAM構成的,並且結構復雜。在CPU的管芯面積不能太大的情況下,L1級緩存的容量不能做得太大。壹般L1緩存的容量通常是32-256 KB。L2緩存是CPU的二級緩存,分為內部和外部芯片。內部芯片二級緩存運行速度與主頻相同,而外部二級緩存只有主頻的壹半。L2緩存容量也會影響CPU的性能。原則是緩存越大越好。壹般普通臺式機CPU的L2緩存為128KB至2MB或更高,筆記本、服務器、工作站使用的CPU L2緩存最高可達1MB-3MB。
緩存只是少量數據在內存中的拷貝,所以當CPU在緩存中尋找數據時,也會找不到(因為這些數據不是從內存拷貝到緩存的)。這個時候CPU還是會在內存中尋找數據,這樣會降低系統的速度,但是CPU會把這些數據復制到緩存中,這樣下次就不會從內存中檢索了。隨著時間的變化,最頻繁訪問的數據並不是壹成不變的,也就是說,剛才不頻繁訪問的數據已經需要頻繁訪問了,剛才是最頻繁訪問的數據,但並不頻繁,所以要按照壹定的算法頻繁替換緩存中的數據,這樣才能保證緩存中的數據是最頻繁訪問的。
2.工作原理
緩存的工作原理是,當CPU要讀取壹個數據時,先從CPU緩存中查找,立即讀取並發送給CPU處理;如果沒有找到,將從相對較慢的內存中讀取,並發送給CPU進行處理。同時,這個數據所在的數據塊會被轉移到緩存中,這樣以後就可以從緩存中讀取整個數據,而不需要調用內存。正是這種讀取機制,使得CPU讀取緩存的命中率非常高(大部分CPU可以達到90%左右),也就是說,CPU下次讀取的數據有90%在CPU緩存中,只有10%左右需要從內存中讀取。這大大節省了CPU直接讀取內存的時間,也使得CPU在讀取數據時基本上不需要等待。壹般來說,CPU讀取數據的順序是先緩存再內存。
隨機存取存儲器
內存)和ROM(只讀)
內存)相比之下,RAM是斷電後信息消失的那種,ROM斷電後不會消失。RAM有兩種,壹種是靜態的。
RAM,SRAM(靜態RAM);壹種是動態RAM,DRAM(動態RAM)。前者的存儲速度比後者快很多,使用的內存壹般是動態RAM。為了提高系統的速度,只需擴展緩存。擴展越大,緩存的數據就越多,系統就越快。緩存壹般是靜態RAM,速度很快,但是靜態RAM集成度低(靜態RAM的體積是
6倍於動態RAM),而且價格高(同樣容量的靜態RAM是動態RAM的4倍)。所以把靜態RAM擴展成緩存是非常愚蠢的行為。
但是為了提高系統的性能和速度,需要擴展緩存,所以有壹個折中的方法,不是擴展原有的靜態RAM緩存,而是增加壹些高速的動態RAM作為緩存。
這些高速動態RAM比傳統的動態RAM快,但比原來的靜態RAM緩存慢。原來的靜態RAM緩存稱為壹級緩存,後來增加的動態RAM稱為二級緩存。
壹. CPU緩存
介紹
高速緩沖存儲器
CPU緩存是位於CPU和內存之間的臨時內存。它的容量比內存小很多,但交換速度比內存快很多。cache的出現主要是為了解決CPU運行速度和內存讀寫速度的矛盾,因為CPU運行速度比內存讀寫速度快很多,會讓CPU花費很長時間等待數據到達或者將數據寫入內存。緩存中的數據是內存的壹小部分,但這壹小部分會在短時間內被CPU訪問。當CPU調用大量數據時,可以直接從緩存中調用,無需內存,從而加快讀取速度。可以看出,給CPU增加緩存是壹種高效的解決方案,這樣整個內存(緩存+內存)就變成了壹個高速的存儲系統,既有緩存又有內存。緩存對CPU的性能影響很大,主要是CPU的數據交換順序和CPU與緩存之間的帶寬造成的。
基本上緩存用的是SRAM內存,是英文Static RAM的縮寫。它是壹種具有靜態存取功能的存儲器,可以在不刷新電路的情況下保存存儲在其中的數據。與DRAM存儲器不需要刷新電路不同,DRAM必須每隔壹段時間刷新充電壹次,否則內部數據就會消失,所以SRAM性能高,但也有缺點,就是集成度低,同樣容量的DRAM存儲器可以設計得更小,但SRAM需要大體積,這也是緩存容量不能做得太大的重要原因。其特點總結如下:優點是節能、速度快,不需要配合存儲器刷新電路,整體工作效率可以提高;缺點是集成度低,相同容量體積大,價格高,關鍵系統只能少量使用以提高效率。
操作原理
1,閱讀順序
當CPU要讀取壹個數據時,先從緩存中查找,如果找到,就立即讀取並發送給CPU處理。如果沒有找到,可以從內存中以相對較慢的速度讀取,並發送給CPU進行處理。同時可以將這個數據所在的數據塊轉移到緩存中,這樣以後就可以從緩存中讀取整個數據,而不需要調用內存。
正是這種讀取機制使得CPU讀取緩存的命中率非常高(大部分CPU可以達到90%左右),也就是說CPU下次讀取的數據有90%在緩存中,只有10%左右需要從內存中讀取。這大大節省了CPU直接讀取內存的時間,也使得CPU在讀取數據時基本上不需要等待。壹般來說,CPU讀取數據的順序是先緩存再內存。
2.緩存分類
英特爾開始從奔騰中分離緩存,通常分為壹級緩存L1和二級緩存L2。以前L1緩存集成在CPU中,稱為片上緩存。L1還分為數據緩存(D-Cache)和指令緩存(I-Cache)。它們分別用於存儲數據和執行這些數據的指令,兩個緩存可以同時被CPU訪問,減少了因爭用緩存而產生的沖突,提高了處理器效率。
3.閱讀命中率
當緩存中沒有數據時,CPU在緩存中找到有用的數據稱為命中。
當CPU需要數據時(此時稱為未命中),CPU訪問內存。理論上講,在二級緩存的CPU中讀取L1。
緩存命中率為80%。也就是說,CPU從L1緩存中找到的有用數據占總數據的80%,剩下的20%來自L2。
緩存讀取。由於要執行的數據無法準確預測,
讀L2的命中率也在80%左右(從L2讀取的有用數據占總數據的16%)。然後壹些數據將不得不從內存中調用,但這已經是壹個相當小的比例。在某個高度
在端域的CPU中(像英特爾的安騰),我們經常聽到L3緩存,它是用來讀取L2的。
為緩存後丟失的數據設計的緩存。在壹個帶L3緩存的CPU中,只需要從內存中調用5%左右的數據,進壹步提高了CPU的效率。