CPU緩存L1/L2/L3工作原理
點(diǎn)擊上方藍(lán)色“小哈學(xué)Java”,選擇“設(shè)為星標(biāo)”
回復(fù)“資源”獲取獨(dú)家整理的學(xué)習(xí)資料!



一、前言
在過去的幾年中,計算機(jī)處理器取得了相當(dāng)大的進(jìn)步,晶體管的尺寸每年都在變小,而且這種進(jìn)步達(dá)到了摩爾定律迅速變得多余的地步。
當(dāng)涉及到處理器時,不僅晶體管和頻率很重要,高速緩存也很重要。
在討論CPU(Central Processing Units)時,您可能聽說過高速緩存。但是,我們并沒有過多地關(guān)注這些數(shù)字,它們也不是這些CPU廣告的主要亮點(diǎn)。

那么,CPU緩存到底有多重要,它又是如何工作的?
二、什么是CPU緩存?
首先,緩存只是一種非??焖俚膬?nèi)存類型。您可能知道,計算機(jī)內(nèi)部有多種內(nèi)存類型。有一個主存儲(如硬盤或SSD),用于存儲大量數(shù)據(jù)(操作系統(tǒng)和所有程序)。
接下來,我們有隨機(jī)存取存儲器,通常稱為RAM。這比主存儲要快得多。

最后,CPU自身具有更快的存儲單元,我們稱之為緩存。
計算機(jī)的內(nèi)存具有基于速度的層次結(jié)構(gòu),而緩存位于該層次結(jié)構(gòu)的頂部,是最快的。它也是最靠近中央處理的地方,它是CPU本身的一部分。
高速緩存是靜態(tài)RAM(SRAM),而系統(tǒng)RAM是動態(tài)RAM(DRAM)。靜態(tài)RAM是一種可以保存數(shù)據(jù)但是不要用一直刷新的存儲器,與DRAM不同,SRAM更加適合用于高速緩存。

三、CPU緩存如何工作?
我們已經(jīng)知道,程序被設(shè)計為一組指令,最終由CPU運(yùn)行。
當(dāng)我們運(yùn)行程序的時候,這些指令必須從主存儲器取指令到CPU。這是內(nèi)存層次結(jié)構(gòu)起作用的地方。
數(shù)據(jù)首先被加載到RAM中,然后被發(fā)送到CPU。因為CPU每秒都能夠執(zhí)行大量指令。為了充分利用其功能,CPU需要訪問超高速內(nèi)存,這是緩存的來源。
內(nèi)存控制器執(zhí)行從RAM中獲取數(shù)據(jù)并將其發(fā)送到緩存的工作。根據(jù)系統(tǒng)中使用的CPU,此控制器可以位于主板的北橋芯片組上,也可以位于CPU本身內(nèi)部。
然后,高速緩存在CPU內(nèi)執(zhí)行數(shù)據(jù)的來回傳輸。內(nèi)存的層次結(jié)構(gòu)也存在于緩存中。
四、緩存級別:L1,L2和L3
CPU緩存分為三個主要的級別,即L1,L2和L3。這里的層次結(jié)構(gòu)是根據(jù)緩存速度來劃分的。

L1(1級)高速緩存是計算機(jī)系統(tǒng)中存在的最快的內(nèi)存。就訪問優(yōu)先級而言,L1緩存具有CPU在完成特定任務(wù)時最可能需要的數(shù)據(jù)。
就其大小而言,L1高速緩存通常最多可達(dá)256KB。但是,一些真正功能強(qiáng)大的CPU現(xiàn)在將其占用近1MB?,F(xiàn)在,某些服務(wù)器芯片組(如Intel的高端Xeon CPU)具有1-2MB的一級緩存。
L1緩存通常也分為兩種方式,分為指令緩存和數(shù)據(jù)緩存。指令高速緩存處理有關(guān)CPU必須執(zhí)行的操作的信息,而數(shù)據(jù)高速緩存則保留要在其上執(zhí)行操作的數(shù)據(jù)。

L2(2級)緩存比L1緩存慢,但大小更大。它的大小通常在256KB到8MB之間,盡管更新,功能強(qiáng)大的CPU往往會超過此大小。L2高速緩存保存下一步可能由CPU訪問的數(shù)據(jù)。在大多數(shù)現(xiàn)代CPU中,L1和L2高速緩存位于CPU內(nèi)核本身,每個內(nèi)核都有自己的高速緩存。
L3(3級)高速緩存是最大的高速緩存存儲單元,也是最慢的一個。它的范圍從4MB到50MB以上?,F(xiàn)代CPU在CPU裸片上具有用于L3高速緩存的專用空間,并且占用了很大一部分空間。
五、緩存命中或未命中以及延遲
數(shù)據(jù)會從RAM依次流到L3高速緩存,然后是L2,最后是L1。
當(dāng)處理器正在尋找要執(zhí)行操作的數(shù)據(jù)時,它首先嘗試在L1高速緩存中找到它。如果CPU能夠找到它,則該情況稱為高速緩存命中。然后,它繼續(xù)在L2和L3中找到它。
如果找不到數(shù)據(jù),它將嘗試從主內(nèi)存訪問數(shù)據(jù)。這稱為高速緩存未命中。
現(xiàn)在,眾所周知,高速緩存旨在加快主內(nèi)存和CPU之間的數(shù)據(jù)傳輸。
從內(nèi)存訪問數(shù)據(jù)所需的時間稱為延遲,L1具有最低的延遲,是最快的,并且最接近核心,而L3具有最高的延遲。緩存未命中時,延遲會增加很多。這是因為CPU必須從主存儲器中獲取數(shù)據(jù)。
隨著計算機(jī)變得越來越快和越來越好,我們看到延遲減少了?,F(xiàn)在,我們擁有低延遲的DDR4 RAM,以及具有低訪問時間的超高速SSD作為主要存儲,這兩項都大大降低了整體延遲。
以前,緩存設(shè)計曾經(jīng)使L2和L3緩存位于CPU外部,這對延遲產(chǎn)生了負(fù)面影響。
然而,CPU制造工藝的進(jìn)步使得在比以前更小的空間中安裝數(shù)十億個晶體管。因此,為緩存留出了更多空間,這使緩存盡可能地靠近核心,從而大大減少了延遲。
六、緩存的未來
緩存設(shè)計一直在發(fā)展,尤其是隨著內(nèi)存變得更便宜,更快和更密集。英特爾和AMD在緩存設(shè)計方面進(jìn)行了相當(dāng)多的試驗,英特爾甚至還在試驗L4緩存。CPU市場正在以前所未有的速度向前發(fā)展。
這樣,我們必定會看到緩存設(shè)計跟上CPU不斷增長的能力。
緩存設(shè)計方面進(jìn)行了相當(dāng)多的試驗,英特爾甚至還在試驗L4緩存。CPU市場正在以前所未有的速度向前發(fā)展。
這樣,我們必定會看到緩存設(shè)計跟上CPU不斷增長的能力。
此外,還有很多工作可以減少現(xiàn)代計算機(jī)的瓶頸。減少內(nèi)存延遲可能是其中最大的一部分。業(yè)界正在為相同的解決方案而努力,并且未來看起來確實(shí)充滿希望。
題外話: 目前小哈正在個人博客(新搭建的網(wǎng)站,域名就是犬小哈的拼音)?www.quanxiaoha.com?上更新《Go語言教程》、《Gin Web框架教程》,畢竟Go自帶天然的并發(fā)優(yōu)勢,后端的同學(xué)還是要學(xué)一下的,這個教程系列小哈會一直更新下去,歡迎小伙伴們訪問哦~
END
有熱門推薦?
最近面試BAT,整理一份面試資料《Java面試BATJ通關(guān)手冊》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。
獲取方式:點(diǎn)“在看”,關(guān)注公眾號并回復(fù)?Java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。
謝謝支持喲 (*^__^*)

