當前位置:首頁 » 硬碟大全 » cpu內存緩存
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

cpu內存緩存

發布時間: 2023-05-13 12:57:50

❶ cpu緩存和內存有什麼區別

分類: 電腦/網路 >> 硬體
解析:

這是兩種完全不同的概念

內存是電腦運行程序必須佔用的空間 電腦沒運鄭宴行一個程序 對應的就會在內存中為該進程分配對應需求的空間 也就是內存大小 如果不夠便會從應該上分配 這就是所說的虛擬內存

而CPU緩存 是CPU構造時決定的 電腦內所有硬體、軟體的運行都要由CPU控拍團制 當然 CPU和各個部件的數據傳輸也是需要臨時通道的 也就是CASE 通襲叢橘常說的就是CPU二級緩存

但是緩存的速度比內存快了很多倍

具體速度比較 CPU緩存>內存>硬碟

❷ 請問電腦CPU1級 2級 3級緩存是什麼意思

CPU中緩存是為了加快CPU讀取數據的速度,也是為了給內存一個緩沖期。因為CPU運算速度太快了,光靠內存讀寫完全跟不上,而CPU緩存的數據交換比內存快多了,大部分時候CPU可以直接從緩存讀取數據,找不到的話再從內存讀取,這樣可以節省CPU讀取內存數據時浪費的時間。

CPU緩存分為三類,一級緩存(L1)、二級緩存(L2)和三級緩存(L3)。CPU在實際數據讀取中重要的卻是一級緩存,因為一級緩存速度最快,二級緩存其次,三級緩存最慢,只是三級緩存的容量最大。

(2)cpu內存緩存擴展閱讀:

一級緩存雖然速度最快,但容量最小,單位都是KB,不同CPU之間一級緩存沒有差距,所以現在不怎麼提了,二級緩存容量也不大,慎祥基本都是個位數MB,除了一些伺服器CPU會有10幾MB之外,現在CPU也不怎麼提二級緩存。CPU讀取緩存時會先從一級緩存開始,然是二級緩存,而讀取二級緩存有時候會出現數據未命中的情況,這時候就需要從三級緩存讀取。

但是要注意的是三級緩存越大並不一定說這個CPU性能就越強,因為三級緩存的容量還依靠CPU架構和工藝等方面的影響,如果是與架正孝褲構工藝搭配升級的三級緩存,容量越大才會性能舉簡越高。

❸ 為什麼CPU要分一級緩存、二級緩存和三級緩存

CPU緩存就是CPU內部的緩存運行頻率,緩存的源陸大小與結構對CPU速度的影響較大,因此緩存大小也是CPU重要的性能指標之一。

CPU緩存的作用主要是為了解決CPU運算速度與內存讀寫速度不匹配的矛盾,而緩存的容量要比內存要小的太多,但是其速度要比內存快的多,因此這樣會讓CPU使用很長的時間等待數據到來或把數據寫入內存中。

搜索在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就能夠避開內存直接從緩存中調用,從而加快讀取速度。

當CPU需要讀取數據並進行計算時,首先需要將CPU緩存中查到所需的數據,並在最短的時間下交付給CPU。

如果沒有查到所需的數據,CPU就會提出「要求」經過緩存從內存中讀取,再原路返回至CPU進行計算。而同時,把這個數據所在的數據也調入緩存,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。

一級緩存(L1 Cache)

CPU一級緩存,就是指CPU的第一層級的高速緩存,主要當擔的工作是緩存指令和緩存數據。一級緩存的容量與結構對CPU性能影響十分大,但是由於它的結構比較復雜,又考慮到成本等因素,一般來說,CPU的一級緩存較小,通常CPU的一級緩存也就能做到256KB左右的水平。

二級緩存(L2 Cache66)

CPU二級緩存,就是指CPU的第二層級的高速緩存,而二級緩存的容量會直接影響到CPU的性能,二級緩存的容量越大越好。例如intel的第八代i7-8700處理器,共有六個核心數量,而每個核心都擁有256KB的二級緩存,屬於各核心獨享,這樣二級緩存總數就達到了1.5MB。

三級緩存(L3 Cache)盯宏

CPU三級緩存,就是指CPU的第三層級的高速緩存,其作用是進一步降低內存的延遲,同時提升海量數據量計算時的性能。和一級緩存、二級緩存不同的是,三級緩存是核心共享的,能夠將容量做的很大。

CPU的核心數量、高頻高低都會影響性能,但如果讓CPU更聰明、更有效率的執行計算任務,那麼緩存的作用就至關重要了。

(3)cpu內存緩存擴展閱讀:

CPU主要性能參數:

1、主頻

主頻也叫時鍾頻率,單位是兆赫(MHz)或千兆赫(GHz),用來表示CPU的運算、處理數據的速度。

2、外頻

外頻是CPU的基準頻率,單位是MHz。CPU的外頻決定著整塊主板的運行雹則頃速度。

3、匯流排頻率

前端匯流排(FSB)是將CPU連接到北橋晶元的匯流排。前端匯流排(FSB)頻率(即匯流排頻率)是直接影響CPU與內存直接數據交換速度。

4、倍頻系數

倍頻系數是指CPU主頻與外頻之間的相對比例關系。

5、緩存

緩存大小也是CPU的重要指標之一,而且緩存的結構和大小對CPU速度的影響非常大,CPU內緩存的運行頻率極高,一般是和處理器同頻運作,工作效率遠遠大於系統內存和硬碟。

❹ CPU內部緩存是什麼意思

緩存大小也是CPU的重要指標之一,而且緩存的結構和大小對CPU速度的影響非常大,CPU內緩存的運行頻率極高,察旅一般是和處理器同頻運作,工作效率遠遠大於系統內存和硬碟。實際工作時,CPU往往需要重復讀取同樣的數據塊,而內部如沒弊緩存容量的增大,可以大幅度提升CPU內部讀取數據的命中率,而不用再到內存或者硬碟上尋找,以此提高系統性能。但是由於CPU晶元面積和成本的因素來考慮,緩存都很渣族小。

❺ cpu緩存名詞解釋

cpu緩存是位於cpu與內存之間的臨時存儲器,它的容量比內存小的多但是交換速度卻比內存要快得多。緩存的出現主要是為了解決cpu運算速度與內存讀寫速度不匹配的矛盾,因為cpu運算速度要比內存讀寫速度快很多,這樣會使cpu花費很長時間等待數據到來或把數據寫入內存。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內cpu即將訪問的,當cpu調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。 就好比你是cpu,你旁邊桌子上的工具是一級緩存,雖然不多但是用起來最方便,桌子旁椅子上的工具是2級緩存,1級不夠就拿2級的,3級就是桌子下面工具箱,內存就是放工具的倉庫,這樣明白了吧

❻ CPU Cache

title: CPU Cache
date: 2019-11-17 20:20:30
keywords: cache "CPU cache" "三級緩存" 緩存映射 cache原理 多級cache TLB

  引入 Cache 的理論基礎是程序局部性原理,包括時間局部性和空間局部性。時間局部性原理即最近被CPU訪問的數據,短期內CPU 還要訪問(時間);空間局部性即被CPU訪問的數據附近的數據,CPU短期內還要訪問(空間)。因此如果將剛剛訪問過的數據緩存在一個速度比主存快得多的存儲中,那下次訪問時,可以直接從這個存儲中取,其速度可以得到數量級的提高。

  CPU緩存是(Cache Memory)位於CPU與內存之間的臨時存儲器,它的容量比內存小但交換速度快。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。

  在CPU中加入緩存是一種高效的解決方案,是對於存儲器件成本更低,速度更快這兩個互相矛盾的目標的一個最優解決方案,這樣整個內存儲器(緩存+內存)就變成了既有緩存的高速度,又有內存的大容量的存儲系統了。緩存對CPU的性能影響很大,主要是因為CPU的數據交換順序和CPU與緩存間的帶寬引起的。
下圖是一個典型的存儲器層次結構,我們可以看到一共使用了三級緩存

各級存儲訪問延遲的對比

  介於CPU和主存儲器間的高速小容量存儲器,由靜態存儲晶元SRAM組成,容量較小但比主存DRAM技術更加昂貴而快速, 接近於CPU的速度。CPU往往需要重復讀取同樣的數據塊, Cache的引入與緩存容量的增大,可以大幅提升CPU內部讀取數據的命中率,從而提高系統性能。通常由高速存儲器、聯想存儲器、地址轉換部件、替換部件等組成。如圖所示。

  早期採用外部(Off-chip)Cache,不做在CPU內而是獨立設置一個Cache。現在採用片內(On-chip)Cache,將Cache和CPU作在一個晶元上,且採用多級Cache,同時使用L1 Cache和L2 Cache,甚至有L3 Cache。

  上圖顯示了最簡單的緩存配置。它對應著最早期使用CPU cache的系統的架構。CPU內核不再直接連接到主內存。所有的數據載入和存儲都必須經過緩存。CPU核心與緩存之間的連接是一種特殊的快速連接。在一個簡化的表示中,主存和高速緩存連接到系統匯流排,該系統匯流排也可用於與系統的其他組件進行通信。我們引入了系統匯流排(現代叫做「FSB」)。
引入緩存後不久,系統變得更加復雜。高速緩存和主存之間的速度差異再次增大,使得另一個級別的高速緩存不得不被添加進來,它比第一級高速緩存更大且更慢。出於經濟原因,僅增加第一級緩存的大小不是一種選擇。今天,甚至有機器在生產環境中使用了三級緩存。帶有這種處理器的系統如圖下所示。隨著單個CPU的內核數量的增加,未來的緩存級別數量可能會增加。現在已經出現了擁有四級cache的處理器了。

  上圖展示了三級緩存的結構。L1d是一級數據cache,L1i是一級指令cache。請注意,這只是一個示意圖; 現實中的數據流從core到主存的過程中不需要經過任何更高級別的cache。CPU設計人員有很大的自由來設計cache的介面。對於程序員來說,這些設計選擇是不可見的。
另外,我們有擁有多個core的處理器,每個core可以有多個「線程」。核心和線程之間的區別在於,獨立的核心具有所有硬體資源的獨立的副本,早期的多核處理器,甚至具有單獨的第二級緩存而沒有第三級緩存。核心可以完全獨立運行,除非它們在同一時間使用相同的資源,例如與外部的連接。另一方面,線程們共享幾乎所有的處理器資源。英特爾的線程實現只為線程提供單獨的寄存器,甚至是有限的,還有一些寄存器是共享的。
一個現代CPU的完整概貌如圖所示。

  由於cache中對應的都是主存地址,即物理地址,在cqu查看具體數據是否在cache中時,如果CPU傳送過來的地址時一個虛擬地址,需要將其轉換成實際物理地址再到cache中去尋找。Cache的實現需要TLB的幫助。可以說TLB命中是Cache命中的基本條件。TLB不命中,會更新TLB項,這個代價非常大,Cache命中的好處基本都沒有了。在TLB命中的情況下,物理地址才能夠被選出,Cache的命中與否才能夠達成。

  TLB是一個內存管理單元用於改進虛擬地址到物理地址轉換速度的緩存。TLB是位於內存中的頁表的cache,如果沒有TLB,則每次取數據都需要兩次訪問內存,即查頁表獲得物理地址和取數據。

  當cpu對數據進行讀請求時,CPU根據虛擬地址(前20位)到TLB中查找.TLB中保存著虛擬地址(前20位)和頁框號的對映關系,如果匹配到虛擬地址就可以迅速找到頁框號(頁框號可以理解為頁表項),通過頁框號與虛擬地址後12位的偏移組合得到最終的物理地址.

  如果沒在TLB中匹配到虛擬地址,就出現TLB丟失,需要到頁表中查詢頁表項,如果不在頁表中,說明要讀取的內容不在內存,需要到磁碟讀取.

  TLB是MMU中的一塊高速緩存,也是一種Cache.在分頁機制中,TLB中的數據和頁表的數據關聯,不是由處理器維護,而是由OS來維護,TLB的刷新是通過裝入處理器中的CR3寄存器來完成.如果MMU發現在TLB中沒有命中,它在常規的頁表查找後,用找到的頁表項替換TLB中的一個條目.

  當進程進行上下文切換時重新設置cr3寄存器,並且刷新tlb.
有兩種情況可以避免刷tlb.
第一種情況是使用相同頁表的進程切換.
第二種情況是普通進程切換到內核線程.
lazy-tlb(懶惰模式)的技術是為了避免進程切換導致tlb被刷新.
當普通進程切換到內核線程時,系統進入lazy-tlb模式,切到普通進程時退出該模式.

  cache是為了解決處理器與慢速DRAM(慢速DRAM即內存)設備之間巨大的速度差異而出現的。cache屬於硬體系統,linux不能管理cache.但會提供flush整個cache的介面.
cache分為一級cache,二級cache,三級cache等等.一級cache與cpu處於同一個指令周期.

  CPU從來不從DRAM直接讀/寫位元組或字,從CPU到DRAM的每次讀或寫的第一步都要經過L1 cache,每次以整數行讀或寫到DRAM中.Cache Line是cache與DRAM同步的最小單位.典型的虛擬內存頁面大小為4KB,而典型的Cache line通常的大小為32或64位元組.

  CPU 讀/寫內存都要通過Cache,如果數據不在Cache中,需要把數據以Cache Line為單位去填充到Cache,即使是讀/寫一個位元組.CPU 不存在直接讀/寫內存的情況,每次讀/寫內存都要經過Cache.

  緩存里有的數據,主存中一定存在。

  一級緩存中還分數據緩存(data cache,d-cache)和指令緩存(instruction cache,i-cache)。二者分別用來存放數據和執行這些數據的指令,而且兩者可以同時被cpu訪問,所以一級cache間數據時獨立的。

  一級沒有的數據二級可能有也可能沒有。因為一級緩存miss會接著訪問二級緩存。

  一級有二級一定有,三級也一定有。因為一級的數據從二級中讀上來的。在一級缺失二級命中時發生。

  二級沒有的數據三級可能有也可能沒有。因為二級確實會接著訪問三級緩存。找不到會繼續訪問主存。

  二級有的數據三級一定有。在二級缺失三級命中時,數據會從三級緩存提到二級緩存。

  三級沒有的數據,主存可能有也可能沒有。三級緩存缺失,會訪問主存,主存也缺失就要從外存訪問數據了。

  三級緩存有的數據主存一定有。因為在三級缺失主存命中時,數據會從主存提到三級緩存中來。

  一級緩存就是指CPU第一層級的高速緩存,主要是為了緩存指令和緩存數據,一級緩存的容量對CPU性能影響非常大,但是因為成本太高,所以一般容量特別小,也就256KB左右。

  二級緩存是CPU第二層級的高速緩存,對於CPU來說,二級緩存容量越大越好,它是直接影響CPU性能的,CPU每個核心都會有自己的緩存,一個CPU的二級緩存容量是所有核心二級緩存容量的總和。

  三級緩存就是CPU第三層級的高速緩存,主要是為了降低與內存進行數據傳輸時的延遲問題,三級緩存與一二級不同,三級緩存只有一個,它是所有核心共享,所以在CPU參數中可以看到,三級緩存相對於其他兩級緩存來說都很大。

   由於緩存的設置與OS無關且透明,所以對於不同的體系架構下不同的處理器對待緩存區域的處理和方式都不同,不同的處理器也有不同的緩存設置值。從主流的處理器cache大小來看,一般一個cache line的大小都是固定的64B左右,這是經過經驗得到的比較合理的大小,一般一級cache大小在數十KB左右,二級cache大小在數十到數百KB左右,而L3 cache大小在數MB左右。

  由於三級cache一般來說是運用於擁有多核的處理器,對於單核處理器來說二級cache就能夠足夠保持夠高的cache命中率。所以一般的三級cache一般只針對於多核處理器。L1和L2級cache是處理器核所單獨的內容。L1又可以看成是L2的cache。L2可以看成是L3級cache的cache。所以我們分兩個部分討論數據放置與數據淘汰策略。

  各級cache間的數據放置策略主要有三種。直接相連映射,全相聯映射和組相聯映射。將一個主存塊存儲到唯一的一個Cache行。對應的大小都是一個cache line的大小,一般來說是64B。

  多對一的映射關系,但一個主存塊只能拷貝到cache的一個特定行位置上去。cache的行號i和主存的塊號j有如下函數關系:i=j mod m(m為cache中的總行數)。

  可以將一個主存塊存儲到任意一個Cache行。
主存的一個塊直接拷貝到cache中的任意一行上

  可以將一個主存塊存儲到唯一的一個Cache組中任意一個行。
將cache分成u組,每組v行,主存塊存放到哪個組是固定的,至於存到該組哪一行是靈活的,即有如下函數關系:cache總行數m=u×v 組號q=j mod u

  組間採用直接映射,組內為全相聯。硬體較簡單,速度較快,命中率較高。是現代處理器中一般所常用的映射方式。

  Cache工作原理要求它盡量保存最新數據,當從主存向Cache傳送一個新塊,而Cache中可用位置已被占滿時,就會產生Cache替換的問題。
常用的替換演算法有下面三種。

  LFU(Least Frequently Used,最不經常使用)演算法將一段時間內被訪問次數最少的那個塊替換出去。每塊設置一個計數器,從0開始計數,每訪問一次,被訪塊的計數器就增1。當需要替換時,將計數值最小的塊換出,同時將所有塊的計數器都清零。
這種演算法將計數周期限定在對這些特定塊兩次替換之間的間隔時間內,不能嚴格反映近期訪問情況,新調入的塊很容易被替換出去。

  LRU(Least Recently Used,近期最少使用)演算法是把CPU近期最少使用的塊替換出去。這種替換方法需要隨時記錄Cache中各塊的使用情況,以便確定哪個塊是近期最少使用的塊。每塊也設置一個計數器,Cache每命中一次,命中塊計數器清零,其他各塊計數器增1。當需要替換時,將計數值最大的塊換出。
  LRU演算法相對合理,但實現起來比較復雜,系統開銷較大。這種演算法保護了剛調入Cache的新數據塊,具有較高的命中率。LRU演算法不能肯定調出去的塊近期不會再被使用,所以這種替換演算法不能算作最合理、最優秀的演算法。但是研究表明,採用這種演算法可使Cache的命中率達到90%左右。

  最簡單的替換演算法是隨機替換。隨機替換演算法完全不管Cache的情況,簡單地根據一個隨機數選擇一塊替換出去。隨機替換演算法在硬體上容易實現,且速度也比前兩種演算法快。缺點則是降低了命中率和Cache工作效率。

  處理器微架構訪問Cache的方法與訪問主存儲器有類似之處。主存儲器使用地址編碼方式,微架構可以地址定址方式訪問這些存儲器。Cache也使用了類似的地址編碼方式,微架構也是使用這些地址操縱著各級Cache,可以將數據寫入Cache,也可以從Cache中讀出內容。只是這一切微架構針對Cache的操作並不是簡單的地址訪問操作。為簡化起見,我們忽略各類Virtual Cache,討論最基礎的Cache訪問操作,並藉此討論CPU如何使用TLB完成虛實地址轉換,最終完成對Cache的讀寫操作。

  Cache的存在使得CPU Core的存儲器讀寫操作略微顯得復雜。CPU Core在進行存儲器方式時,首先使用EPN(Effective Page Number)進行虛實地址轉換,並同時使用CLN(Cache Line Number)查找合適的Cache Block。這兩個步驟可以同時進行。在使用Virtual Cache時,還可以使用虛擬地址對Cache進行定址。為簡化起見,我們並不考慮Virtual Cache的實現細節。

  EPN經過轉換後得到VPN,之後在TLB中查找並得到最終的RPN(Real Page Number)。如果期間發生了TLB Miss,將帶來一系列的嚴重的系統懲罰,我們只討論TLB Hit的情況,此時將很快獲得合適的RPN,並依此得到PA(Physical Address)。

  在多數處理器微架構中,Cache由多行多列組成,使用CLN進行索引最終可以得到一個完整的Cache Block。但是在這個Cache Block中的數據並不一定是CPU Core所需要的。因此有必要進行一些檢查,將Cache Block中存放的Address與通過虛實地址轉換得到的PA進行地址比較(Compare Address)。如果結果相同而且狀態位匹配,則表明Cache Hit。此時微架構再經過Byte Select and Align部件最終獲得所需要的數據。如果發生Cache Miss,CPU需要使用PA進一步索引主存儲器獲得最終的數據。

  由上文的分析,我們可以發現,一個Cache Block由預先存放的地址信息,狀態位和數據單元組成。一個Cache由多個這樣的Cache Block組成,在不同的微架構中,可以使用不同的Cache Block組成結構。我們首先分析單個Cache Block的組成結構。單個Cache Block由Tag欄位,狀態位和數據單元組成,如圖所示。

  其中Data欄位存放該Cache Block中的數據,在多數處理器微架構中,其大小為32或者64位元組。Status欄位存放當前Cache Block的狀態,在多數處理器系統中,這個狀態欄位包含MESI,MOESI或者MESIF這些狀態信息,在有些微架構的Cache Block中,還存在一個L位,表示當前Cache Block是否可以鎖定。許多將Cache模擬成SRAM的微架構就是利用了這個L位。有關MOESIFL這些狀態位的說明將在下文中詳細描述。在多核處理器和復雜的Cache Hierarchy環境下,狀態信息遠不止MOESIF。

  RAT(Real Address Tag)記錄在該Cache Block中存放的Data欄位與那個地址相關,在RAT中存放的是部分物理地址信息,雖然在一個CPU中物理地址可能有40,46或者48位,但是在Cache中並不需要存放全部地址信息。因為從Cache的角度上看,CPU使用的地址被分解成為了若干段,如圖所示。

  這個地址也可以理解為CPU訪問Cache使用的地址,由多個數據段組成。首先需要說明的是Cache Line Index欄位。這一欄位與Cache Line Number類似,CPU使用該欄位從Cache中選擇一個或者一組Entry。

  Bank和Byte欄位之和確定了單個Cache的Data欄位長度,通常也將這個長度稱為Cache 行長度,上圖所示的微架構中的Cache Block長度為64位元組。目前多數支持DDR3 SDRAM的微架構使用的Cache Block長度都是64位元組。部分原因是由於DDR3 SDRAM的一次Burst Line為8,一次基本Burst操作訪問的數據大小為64位元組。

  在處理器微架構中,將地址為Bank和Byte兩個欄位出於提高Cache Block訪問效率的考慮。Multi-Bank Mechanism是一種常用的提高訪問效率的方法,採用這種機制後,CPU訪問Cache時,只要不是對同一個Bank進行訪問,即可並發執行。Byte欄位決定了Cache的埠位寬,在現代微架構中,訪問Cache的匯流排位寬為64位或者為128位。

  剩餘的欄位即為Real Address Tag,這個欄位與單個Cache中的Real Address Tag的欄位長度相同。CPU使用地址中的Real Address Tag欄位與Cache Block的對應欄位和一些狀態位進行聯合比較,判斷其訪問數據是否在Cache中命中

  如果cache miss,就去下一級cache或者主存中去查找數據,並將查找到的數據採用上面的數據淘汰策略將數據替換到cache中。

  由於在發生cache miss時會產生數據替換,在運行過程中緩存的數據也可能會被修改。所以需要一個策略來保持數據在緩存和主存間的一致性。
Cache寫機制分為write through和write back兩種。

❼ CPU也有內存緩存到底是怎麼回事

分類: 電腦/網路 >> 電腦常識
解析:

CPU緩存的工作原理

當CPU要讀取一個數據時,首先會從緩存(Cache)中查找,如果找到就立即讀取並送給CPU處理;如果沒有找到,就用相對慢的速度從內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。

通過優化的的讀取機制,可以使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在緩存中,只有大約10%需要從內存讀取。這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。總的來說,CPU讀取數據的順序是先緩存後內存。

早期的CPU緩存容量很小,並且功能單一,Intel從Pentium時代後把緩存進行了分類,當時集成在CPU內核中的緩存已不足以滿足CPU的需求,而製造工藝上的限制又不能大幅度提高緩存的容量。因此出現了集成在與CPU同一塊電路板上和主板上的緩存等不同類型,於是當時便把CPU內核集成的緩存稱為一級緩存(L1 cache),而外部的稱為二級緩存(L2 Cache);後來隨著生產技術的不斷提高,最終二級緩存也被挪進了CPU當中。通常一級緩存中還分數據緩存(Data Cache,D-Cache)和指令緩存(Instruction Cache,I-Cache)。二者分別用來存放數據和執行這些數據的指令,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了CPU效能。此外,Intel在Pentium 4 CPU中還增加了一種一級追蹤緩存,容量為12KB。

L1 cache vs L2 Cache

用於存儲數據的緩存部分通常被稱為RAM,掉電以後其中的信息就會消失。RAM又分兩種,其中一種是靜態RAM(SRAM);另外一種是動態RAM(DRAM)。前者的存儲速度要比後者快得多,我們現在使用的內存一般都是動態RAM。CPU的L1級緩存通常都是靜態RAM,速度非常的快,但是靜態RAM集成度低(存儲相同的數據,靜態RAM的體積是動態RAM的6倍),而且價格也相對較為昂貴(同容量的靜態RAM是動態RAM的四倍)。擴大靜態RAM作為緩存是一個不太合算的做法,但是為了提高系統的性能和速度又必須要擴大緩存,這就有了一個折中的方法:在不擴大原來的靜態RAM緩存容量的情況下,僅僅增加一些高速動態RAM做為L2級緩存。高速動態RAM速度要比常規動態RAM快,但比原來的靜態RAM緩存慢,而且成本也較為適中。一級緩存和二級緩存中的內容都是內存中訪問頻率高的數據的復製品(映射),它們的存在都是為了減少高速CPU對慢速內存的訪問。

二級緩存是CPU性能表現的關鍵之一,在CPU核心不變化的情況下,增加二級緩存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二級緩存上存在差異,由此可見二級緩存對CPU的重要性。CPU在緩存中找到有用的數據被稱為命中,當緩存中沒有CPU所需的數據時(這時稱為未命中),CPU才訪問內存。從理論上講,在一顆擁有二級緩存的CPU中,讀取一級緩存的命中率為80%。也就是說CPU一級緩存中找到的有用數據占數據總量的80%,剩下的20%從二級緩存中讀取。由於不能准確預測將要執行的數據,讀取二級緩存的命中率也在80%左右(從二級緩存讀到有用的數據占總數據的16%)。那麼還有的數據就不得不從內存調用,但這已經是一個相當小的比例了。目前的較高端CPU中,還會帶有三級緩存,它是為讀取二級緩存後未命中的數據設計的—種緩存,在擁有三級緩存的CPU中,只有約5%的數據需要從內存中調用,這進一步提高了CPU的效率,從某種意義上說,預取效率的提高,大大降低了生產成本卻提供了非常接近理想狀態的性能。除非某天生產技術變得非常強,否則內存仍會存在,緩存的性能遞增特性也仍會保留。

CPU緩存與內存的關系

既然CPU緩存能夠在很大程度上提高CPU的性能,那麼,有些朋友可能會問,是不是將來有可能,目前的系統內存將會被CPU取代呢?

答案應該是否定的,首先,盡管CPU緩存的傳輸速率確實很高,但要完全取代內存的地位仍不可行,這主要是因為緩存只是內存中少部分數據的復製品,所以CPU到緩存中尋找數據時,也會出現找不到的情況(因為這些數據沒有從內存復制到緩存中去),這時CPU還是會到內存中去找數據,與此同時系統的速度就慢了下來,不過CPU會把這些數據復制到緩存中去,以便下一次不用再到內存中去取。也即是說,隨著緩存增大到一定程度,其對CPU性能的影響將越來越小,在性能比上來說,越來越不合算。

就目前緩存容量、成本以及功耗表現來看,還遠遠無法與內存抗衡,另外從某種意義上來說,內存也是CPU緩存的一種表現形式,只不過在速率上慢很多,然而卻在容量、功耗以及成本方面擁有巨大優勢。如果內存在將來可以做到足夠強的話,反而很有取代CPU緩存的可能。

緩存的讀寫演算法同樣重要

即便CPU內部集成的緩存數據交換能力非常強,也仍需要對調取數據做一定的篩選。這是因為隨著時間的變化,被訪問得最頻繁的數據不是一成不變的,也就是說,剛才還不頻繁的數據,此時已經需要被頻繁的訪問,剛才還是最頻繁的數據,現在又不頻繁了,所以說緩存中的數據要經常按照一定的演算法來更換,這樣才能保證緩存中的數據經常是被訪問最頻繁的。命中率演算法中較常用的「最近最少使用演算法」(LRU演算法),它是將最近一段時間內最少被訪問過的行淘汰出局。因此需要為每行設置一個計數器,LRU演算法是把命中行的計數器清零,其他各行計數器加1。當需要替換時淘汰行計數器計數值最大的數據行出局。這是一種高效、科學的演算法,其計數器清零過程可以把一些頻繁調用後再不需要的數據淘汰出緩存,提高緩存的利用率。

小結

高速緩存做為CPU不可分割的一部分,已經融入到性能提升的考慮因素當中,伴隨生產技術的進一步發展,緩存的級數還將增加,容量也會進一步提高。作為CPU性能助推器的高速緩存,仍會在成本和功耗控制方面發揮巨大的優勢,而性能方面也會取得長足的發展。

❽ 什麼是cpu的緩存

CPU緩存的概念
CPU緩存是位於CPU與內存之間的臨時數據交換器,它的容量比內存小的多但是交換速度卻比內存要快得多。CPU緩存一般直接跟CPU晶元集成或位於主板匯流排互連的獨立晶元上。

為了簡化與內存之間的通信,高速緩存控制器是針對數據塊,而不是位元組進行操作的。高速緩存其實就是一組稱之為緩存行(Cache Line)的固定大小的數據塊組成的,典型的一行是64位元組。

3. CPU緩存的意義
CPU往往需要重復處理相同的數據、重復執行相同的指令,如果這部分數據、指令CPU能在CPU緩存中找到,CPU就不需要從內存或硬碟中再讀取數據、指令,從而減少了整機的響應時間。所以,緩存的意義滿足以下兩種局部性原理:

時間局部性(Temporal Locality):如果一個信息項正在被訪問,那麼在近期它很可能還會被再次訪問。
空間局部性(Spatial Locality):如果一個存儲器的位置被引用,那麼將來他附近的位置也會被引用。

❾ cpu緩存的介紹

問:最近經常有朋友問cpu緩存是什麼?CPU緩存有哪些類型?電腦知識網推薦文章

答:CPU緩存可以大幅度提升CPU內部數據讀取效率,因此是衡量CPU性能的一個重要指標,包括L1 Cache(一級緩存)、L2 Cache(二級緩存)和L3 Cache(三級緩存)三種,其中L1 Cache是CPU第一層高速緩存,由於CPU製造工藝等方面的因素,L1緩存的容量一般都比較小。一般CPU的L1緩存容量通常在32KB~256KB左右。L2 Cache是CPU的第二層高速緩存,L2高速緩存容量對CPU的性能有很大的影響,一般來說是越大越好,現在使用的.CPU的L2 Cache容量一般在256KB~2MB。L3 Cache(三級緩存)能進一步降低內存延遲,也能增強CPU處理大數據量的能力。隨著64位處理器的全面普及,出於進一步提升CPU性能的考慮,Intel已經把高速的L3 加入到Itanium 2(安騰2)和P4EE中。