回覆列表
-
1 # AD蠡
-
2 # 繁星落石
可以理解為一段記憶體,記憶體的寬度是一個cache line,長度是cache size/cache line長度。
cache具有高速訪問的性質,因為使用SRAM而非DRAM,具有3-5倍的訪問速度和6倍的體積,因此cache容量通常不會很大。同時為了提高訪問速度,距離CPU更近。
工作原理與記憶體接近,將需要的指令和資料當日對應的cache line,CPU會取到對應位置的資料和指令,並且cache會存放一些熱點資料,下一次CPU使用的時候會先去cache裡面找,如果找不到再去記憶體讀(volatile除外)。
快取就是資料交換的緩衝區(稱作Cache),當某一硬體要讀取資料時,會首先從快取中查詢需要的資料,如果找到了則直接執行,找不到的話則從記憶體中找。由於快取的執行速度比記憶體快得多,故快取的作用就是幫助硬體更快地執行。
因為快取往往使用的是RAM(斷電即掉的非永久儲存),所以在用完後還是會把檔案送到硬碟等儲存器裡永久儲存。電腦裡最大的快取就是記憶體條了,最快的是CPU上鑲的L1和L2快取,顯示卡的視訊記憶體是給顯示卡運算晶片用的快取,硬碟上也有16M或者32M的快取。
1特點
快取是指可以進行高速資料交換的儲存器,它先於記憶體與CPU交換資料,因此速率很快。L1 Cache(一級快取)是CPU第一層快取記憶體。內建的L1快取記憶體的容量和結構對CPU的效能影響較大,不過高速緩衝儲存器均由靜態RAM組成,結構較複雜,在CPU管芯面積不能太大的情況下,L1級快取記憶體的容量不可能做得太大。一般L1快取的容量通常在32—256KB。L2 Cache(二級快取)是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讀取資料的順序是先快取後記憶體。
RAM(Random-Access
Memory)和ROM(Read-Only
Memory)相對的,RAM是掉電以後,其中的資訊就消失那一種,ROM在掉電以後資訊也不會消失那一種。RAM又分兩種,一種是靜態
RAM,SRAM(Static RAM);一種是動態RAM,DRAM(Dynamic RAM)。前者的儲存速率要比後者快得多,使用的記憶體一般都是動態RAM。為了增加系統的速率,把快取擴大就行了,擴的越大,快取的資料越多,系統就越快了,快取通常都是靜態RAM,速率是非常的快, 但是靜態RAM整合度低(儲存相同的資料,靜態RAM的體積是
動態RAM的6倍), 價格高(同容量的靜態RAM是動態RAM的四倍), 由此可見,擴大靜態RAM作為快取是一個非常愚蠢的行為,
但是為了提高系統的效能和速率,必須要擴大快取, 這樣就有了一個折中的方法,不擴大原來的靜態RAM快取,而是增加一些高速動態RAM做為快取,
這些高速動態RAM速率要比常規動態RAM快,但比原來的靜態RAM快取慢, 把原來的靜態RAM快取叫一級快取,而把後來增加的動態RAM叫二級快取。
一.CPU快取
介紹
CPU快取
CPU快取(Cache Memory)是位於CPU與記憶體之間的臨時儲存器,它的容量比記憶體小的多但是交換速率卻比記憶體要快得多。快取的出現主要是為了解決CPU運算速率與記憶體讀寫速率不匹配的矛盾,因為CPU運算速率要比記憶體讀寫速率快很多,這樣會使CPU花費很長時間等待資料到來或把資料寫入記憶體。在快取中的資料是記憶體中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU呼叫大量資料時,就可避開記憶體直接從快取中呼叫,從而加快讀取速率。由此可見,在CPU中加入快取是一種高效的解決方案,這樣整個記憶體儲器(快取+記憶體)就變成了既有快取的高速率,又有記憶體的大容量的儲存系統了。快取對CPU的效能影響很大,主要是因為CPU的資料交換順序和CPU與快取間的頻寬引起的。
快取基本上都是採用SRAM儲存器,SRAM是英文Static RAM的縮寫,它是一種具有靜態存取功能的儲存器,不需要重新整理電路即能儲存它內部儲存的資料。不像DRAM記憶體那樣需要重新整理電路,每隔一段時間,固定要對DRAM重新整理充電一次,否則內部的資料即會消失,因此SRAM具有較高的效能,但是SRAM也有它的缺點,即它的整合度較低,相同容量的DRAM記憶體可以設計為較小的體積,但是SRAM卻需要很大的體積,這也是不能將快取容量做得太大的重要原因。它的特點歸納如下:優點是節能、速率快、不必配合記憶體重新整理電路、可提高整體的工作效率,缺點是整合度低、相同的容量體積較大、而且價格較高,只能少量用於關鍵性系統以提高效率。
工作原理
1、讀取順序
CPU要讀取一個數據時,首先從Cache中查詢,如果找到就立即讀取並送給CPU處理;如果沒有找到,就用相對慢的速度從記憶體中讀取並送給CPU處理,同時把這個資料所在的資料塊調入Cache中,可以使得以後對整塊資料的讀取都從Cache中進行,不必再呼叫記憶體。
正是這樣的讀取機制使CPU讀取Cache的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的資料90%都在Cache中,只有大約10%需要從記憶體讀取。這大大節省了CPU直接讀取記憶體的時間,也使CPU讀取資料時基本無需等待。總的來說,CPU讀取資料的順序是先Cache後記憶體。
2、快取分類
Intel從Pentium開始將Cache分開,通常分為一級快取記憶體L1和二級快取記憶體L2。在以往的觀念中,L1 Cache是整合在CPU中的,被稱為片內Cache。在L1中還分資料Cache(D-Cache)和指令Cache(I-Cache)。它們分別用來存放資料和執行這些資料的指令,而且兩個Cache可以同時被CPU訪問,減少了爭用Cache所造成的衝突,提高了處理器效能。
3、讀取命中率
CPU在Cache中找到有用的資料被稱為命中,當Cache中沒有
CPU所需的資料時(這時稱為未命中),CPU才訪問記憶體。從理論上講,在一顆擁有2級Cache的CPU中,讀取L1
Cache的命中率為80%。也就是說CPU從L1 Cache中找到的有用資料佔資料總量的80%,剩下的20%從L2
Cache讀取。由於不能準確預測將要執行的資料,
讀取L2的命中率也在80%左右(從L2讀到有用的資料佔總資料的16%)。那麼還有的資料就不得不從記憶體呼叫,但這已經是一個相當小的比例了。在一些高
端領域的CPU(像Intel的Itanium)中,我們常聽到L3 Cache,它是為讀取L2
Cache後未命中的資料設計的—種Cache,在擁有L3 Cache的CPU中,只有約5%的資料需要從記憶體中呼叫,這進一步提高了CPU的效率。