一級緩存、二級緩存、三級緩存區別是什麼 詳解它們的區分方法

大家都知道CPU緩存很重要,但對於緩存的具體細分卻知之甚少,本文只要是關於CPU緩存的介紹,並着重描述了一級緩存、二級緩存、三級緩存區別方法。

CPU緩存

CPU緩存(Cache Memory)是位於CPU與內存之間的臨時存儲器,它的容量比內存小的多但是交換速度卻比內存要快得多。高速緩存的出現主要是爲了解決CPU運算速度與內存讀寫速度不匹配的矛盾,因爲CPU運算速度要比內存讀寫速度快很多,這樣會使CPU花費很長時間等待數據到來或把數據寫入內存。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可先緩存中調用,從而加快讀取速度。
在這裏插入圖片描述
CPU緩存的容量比內存小的多但是交換速度卻比內存要快得多。緩存的出現主要是爲了解決CPU運算速度與內存讀寫速度不匹配的矛盾,因爲CPU運算速度要比內存讀寫速度快很多,這樣會使CPU花費很長時間等待數據到來或把數據寫入內存。

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

按照數據讀取順序和與CPU結合的緊密程度,CPU緩存可以分爲一級緩存,二級緩存,部分高端CPU還具有三級緩存,每一級緩存中所儲存的全部數據都是下一級緩存的一部分,這三種緩存的技術難度和製造成本是相對遞減的,所以其容量也是相對遞增的。當CPU要讀取一個數據時,首先從一級緩存中查找,如果沒有找到再從二級緩存中查找,如果還是沒有就從三級緩存或內存中查找。一般來說,每級緩存的命中率大概都在80%左右,也就是說全部數據量的80%都可以在一級緩存中找到,只剩下20%的總數據量才需要從二級緩存、三級緩存或內存中讀取,由此可見一級緩存是整個CPU緩存架構中最爲重要的部分。

一級緩存、二級緩存、三級緩存區別是什麼?

一級緩存、二級緩存、三級緩存是什麼?作用?區別? 首先簡單瞭解一下一級緩存。目前所有主流處理器大都具有一級緩存和二級緩存,少數高端處理器還集成了三級緩存。其中,一級緩存可分爲一級指令緩存和一級數據緩存。一級指令緩存用於暫時存儲並向CPU遞送各類運算指令;一級數據緩存用於暫時存儲並向CPU遞送運算所需數據,這就是一級緩存的作用。 那麼,二級緩存的作用又是什麼呢?簡單地說,二級緩存就是一級緩存的緩衝器:一級緩存製造成本很高因此它的容量有限,二級緩存的作用就是存儲那些CPU處理時需要用到、一級緩存又無法存儲的數據。同樣道理,三級緩存和內存可以看作是二級緩存的緩衝器,它們的容量遞增,但單位制造成本卻遞減。

需要注意的是,無論是二級緩存、三級緩存還是內存都不能存儲處理器操作的原始指令,這些指令只能存儲在CPU的一級指令緩存中,而餘下的二級緩存、三級緩存和內存僅用於存儲CPU所需數據。 根據工作原理的不同,目前主流處理器所採用的一級數據緩存又可以分爲實數據讀寫緩存和數據代碼指令追蹤緩存2種,它們分別被AMD和Intel所採用。不同的一級數據緩存設計對於二級緩存容量的需求也各不相同,下面讓我們簡單瞭解一下這兩種一級數據緩存設計的不同之處。

一、AMD一級數據緩存設計 AMD採用的一級緩存設計屬於傳統的“實數據讀寫緩存”設計。基於該架構的一級數據緩存主要用於存儲CPU最先讀取的數據;而更多的讀取數據則分別存儲在二級緩存和系統內存當中。做個簡單的假設,假如處理器需要讀取“AMD ATHLON 64 3000+ IS GOOD”這一串數據(不記空格),那麼首先要被讀取的“AMDATHL”將被存儲在一級數據緩存中,而餘下的“ON643000+ISGOOD”則被分別存儲在二級緩存和系統內存當中(如下圖所示)。 需要注意的是,以上假設只是對AMD處理器一級數據緩存的一個抽象描述,一級數據緩存和二級緩存所能存儲的數據長度完全由緩存容量的大小決定,而絕非以上假設中的幾個字節。“實數據讀寫緩存”的優點是數據讀取直接快速,但這也需要一級數據緩存具有一定的容量,增加了處理器的製造難度(一級數據緩存的單位制造成本較二級緩存高)。

二、Intel一級數據緩存設計 自P4時代開始,Intel開始採用全新的“數據代碼指令追蹤緩存”設計。基於這種架構的一級數據緩存不再存儲實際的數據,而是存儲這些數據在二級緩存中的指令代碼(即數據在二級緩存中存儲的起始地址)。假設處理器需要讀取“INTEL P4 IS GOOD”這一串數據(不記空格),那麼所有數據將被存儲在二級緩存中,而一級數據代碼指令追蹤緩存需要存儲的僅僅是上述數據的起始地址。

由於一級數據緩存不再存儲實際數據,因此“數據代碼指令追蹤緩存”設計能夠極大地降CPU對一級數據緩存容量的要求,降低處理器的生產難度。但這種設計的弊端在於數據讀取效率較“實數據讀寫緩存設計”低,而且對二級緩存容量的依賴性非常大。 在瞭解了一級緩存、二級緩存的大致作用及其分類以後,下面我們來回答以下硬件一菜鳥網友提出的問題。

從理論上講,二級緩存越大處理器的性能越好,但這並不是說二級緩存容量加倍就能夠處理器帶來成倍的性能增長。目前CPU處理的絕大部分數據的大小都在0-256KB之間,小部分數據的大小在256KB-512KB之間,只有極少數數據的大小超過512KB。所以只要處理器可用的一級、二級緩存容量達到256KB以上,那就能夠應付正常的應用;512KB容量的二級緩存已經足夠滿足絕大多數應用的需求。 這其中,對於採用“實數據讀寫緩存”設計的AMD Athlon 64、Sempron處理器而言,由於它們已經具備了64KB一級指令緩存和64KB一級數據緩存,只要處理器的二級緩存容量大於等於128KB就能夠存儲足夠的數據和指令,因此它們對二級緩存的依賴性並不大。這就是爲什麼主頻同爲1.8GHz的Socket 754 Sempron 3000+(128KB二級緩存)、Sempron 3100+(256KB二級緩存)以及Athlon 64 2800+(512KB二級緩存)在大多數評測中性能非常接近的主要原因。所以對於普通用戶而言754 Sempron 2600+是值得考慮的。 反觀Intel目前主推的P4、賽揚系列處理器,它們都採用了“數據代碼指令追蹤緩存”架構,其中Prescott內核的一級緩存中只包含了12KB一級指令緩存和16KB一級數據緩存,而Northwood內核更是隻有12KB一級指令緩存和8KB一級數據緩存。

因此,P4、賽隆系列處理器非常依賴於二級緩存,賽揚D 320(256KB二級緩存)和賽揚2.4GHz(128kb二級緩存)的性能差距是很好的證明;Cayon D和P4E處理器之間的性能差距也非常明顯。最後,如果你是一個狂熱的遊戲愛好者或者一個專業的多媒體用戶,一個帶有1MB二級緩存的P4處理器和一個512Kb/1MB二級緩存的Athon 64處理器是你的理想選擇。由於CPU的主存和二級緩存在重計算負載下幾乎是“滿”的,大的二級緩存可以爲處理器提供大約5%到10%的性能改進,這對於要求苛刻的用戶是絕對必要的。一級緩存是在CPU內的,用來存放內部指令,2級緩存和CPU封裝在一起,也是用來存放指令數據的,三級和四級緩存只在高端的服務器CPU裏有,作用差不多,速度更快,更穩定,更有效 並不是緩存越大越好,譬如AMD和INTER就有不同的理論,AMD認爲一級緩存越大越好,所以一級比較大,而INTER認爲過大會有更長的指令執行時間,所以一級很小,二級緩存那兩個公司的理論又反過來了,AMD的小,INTER的大,一般主流的INTERCPU的2級緩存都在2M左右 我們通常用(L1,L2)來稱呼緩存又叫高速緩衝存儲器其作用在於緩解主存速度慢、跟不上CPU讀寫速度要求的矛盾。它的實現原理,是把CPU最近最可能用到的少量信息(數據或指令)從主存複製到CACHE中,當CPU下次再用這些信息時,它就不必訪問慢速的主存,而直接從快速的CACHE中得到,從而提高了得到這些信息的速度,使CPU有更高的運行效率。

緩存的大小

一般說來,更大一點的cache容量,對提高命中率是有好處的,如圖4.20所示,由於cache 是用價格很高的靜態存儲器SRAM器件實現的,而cache容量達到一定大小這後,再增加其容量,對命中率的提高並不明顯,從合理的性能/價格比考慮,cache的容量設置應在一個合理的容量範圍之內。緩存要分一級二級 三級,是爲了建立一個層次存儲結構,以達到最高性價比。而且多級組織還可以提高cache的命中率,提高執行效能。

CPU緩存(Cache Memory)是位於CPU與內存之間的臨時存儲器,它的容量比內存小的多但是交換速度卻比內存要快得多。緩存的出現主要是爲了解決CPU運算速度與內存讀寫速度不匹配的矛盾,因爲CPU運算速度要比內存讀寫速度快很多,這樣會使CPU花費很長時間等待數據到來或把數據寫入內存。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。由此可見,在CPU中加入緩存是一種高效的解決方案,這樣整個內存儲器(緩存+內存)就變成了既有緩存的高速度,又有內存的大容量的存儲系統了。緩存對CPU的性能影響很大,主要是因爲CPU的數據交換順序和CPU與緩存間的帶寬引起的。 緩存的工作原理是當CPU要讀取一個數據時,首先從緩存中查找,如果找到就立即讀取並送給CPU處理;如果沒有找到,就用相對慢的速度從內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。 正是這樣的讀取機制使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在緩存中,只有大約10%需要從內存讀取。

這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。總的來說,CPU讀取數據的順序是先緩存後內存。 目前緩存基本上都是採用SRAM存儲器,SRAM是英文Static RAM的縮寫,它是一種具有靜志存取功能的存儲器,不需要刷新電路即能保存它內部存儲的數據。不像DRAM內存那樣需要刷新電路,每隔一段時間,固定要對DRAM刷新充電一次,否則內部的數據即會消失,因此SRAM具有較高的性能,但是SRAM也有它的缺點,即它的集成度較低,相同容量的DRAM內存可以設計爲較小的體積,但是SRAM卻需要很大的體積,這也是目前不能將緩存容量做得太大的重要原因。

它的特點歸納如下:優點是節能、速度快、不必配合內存刷新電路、可提高整體的工作效率,缺點是集成度低、相同的容量體積較大、而且價格較高,只能少量用於關鍵性系統以提高效率。 按照數據讀取順序和與CPU結合的緊密程度,CPU緩存可以分爲一級緩存,二級緩存,部分高端CPU還具有三級緩存,每一級緩存中所儲存的全部數據都是下一級緩存的一部分,這三種緩存的技術難度和製造成本是相對遞減的,所以其容量也是相對遞增的。當CPU要讀取一個數據時,首先從一級緩存中查找,如果沒有找到再從二級緩存中查找,如果還是沒有就從三級緩存或內存中查找。一般來說,每級緩存的命中率大概都在80%左右,也就是說全部數據量的80%都可以在一級緩存中找到,只剩下20%的總數據量才需要從二級緩存、三級緩存或內存中讀取,由此可見一級緩存是整個CPU緩存架構中最爲重要的部分。

一級緩存(Level 1 Cache)簡稱L1 Cache,位於CPU內核的旁邊,是與CPU結合最爲緊密的CPU緩存,也是歷史上最早出現的CPU緩存。由於一級緩存的技術難度和製造成本最高,提高容量所帶來的技術難度增加和成本增加非常大,所帶來的性能提升卻不明顯,性價比很低,而且現有的一級緩存的命中率已經很高,所以一級緩存是所有緩存中容量最小的,比二級緩存要小得多。一般來說,一級緩存可以分爲一級數據緩存(Data Cache,D-Cache)和一級指令緩存(InstrucTIon Cache,I-Cache)。二者分別用來存放數據以及對執行這些數據的指令進行即時解碼,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的衝突,提高了處理器效能。目前大多數CPU的一級數據緩存和一級指令緩存具有相同的容量,例如AMD的Athlon XP就具有64KB的一級數據緩存和64KB的一級指令緩存,其一級緩存就以64KB+64KB來表示,其餘的CPU的一級緩存表示方法以此類推。

Intel的採用NetBurst架構的CPU(最典型的就是PenTIum 4)的一級緩存有點特殊,使用了新增加的一種一級追蹤緩存(ExecuTIon Trace Cache,T-Cache或ETC)來替代一級指令緩存,容量爲12KμOps,表示能存儲12K條即12000條解碼後的微指令。一級追蹤緩存與一級指令緩存的運行機制是不相同的,一級指令緩存只是對指令作即時的解碼而並不會儲存這些指令,而一級追蹤緩存同樣會將一些指令作解碼,這些指令稱爲微指令(micro-ops),而這些微指令能儲存在一級追蹤緩存之內,無需每一次都作出解碼的程序,因此一級追蹤緩存能有效地增加在高工作頻率下對指令的解碼能力,而μOps就是micro-ops,也就是微型操作的意思。它以很高的速度將μops提供給處理器核心。Intel NetBurst微型架構使用執行跟蹤緩存,將解碼器從執行循環中分離出來。

這個跟蹤緩存以很高的帶寬將uops提供給核心,從本質上適於充分利用軟件中的指令級並行機制。Intel並沒有公佈一級追蹤緩存的實際容量,只知道一級追蹤緩存能儲存12000條微指令(micro-ops)。所以,我們不能簡單地用微指令的數目來比較指令緩存的大小。實際上,單核心的NetBurst架構CPU使用8Kμops的緩存已經基本上夠用了,多出的4kμops可以大大提高緩存命中率。而如果要使用超線程技術的話,12KμOps就會有些不夠用,這就是爲什麼有時候Intel處理器在使用超線程技術時會導致性能下降的重要原因。

例如Northwood核心的一級緩存爲8KB+12KμOps,就表示其一級數據緩存爲8KB,一級追蹤緩存爲12KμOps;而Prescott核心的一級緩存爲16KB+12KμOps,就表示其一級數據緩存爲16KB,一級追蹤緩存爲12KμOps。在這裏12KμOps絕對不等於12KB,單位都不同,一個是μOps,一個是Byte(字節),而且二者的運行機制完全不同。所以那些把Intel的CPU一級緩存簡單相加,例如把Northwood核心說成是20KB一級緩存,把Prescott核心說成是28KB一級緩存,並且據此認爲Intel處理器的一級緩存容量遠遠低於AMD處理器128KB的一級緩存容量的看法是完全錯誤的,二者不具有可比性。在架構有一定區別的CPU對比中,很多緩存已經難以找到對應的東西,即使類似名稱的緩存在設計思路和功能定義上也有區別了,此時不能用簡單的算術加法來進行對比;而在架構極爲近似的CPU對比中,分別對比各種功能緩存大小纔有一定的意義。

轉載自(http://www.elecfans.com/bandaoti/cunchu/20180814728879.html)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章