您的位置:首頁>數碼>正文

超能課堂(133):為什麼CPU緩存會分為L1、L2、L3?

緩存這個詞想必大家都聽過, 其實緩存的意義很廣泛:電腦整機最大的緩存可以體現為記憶體條、顯卡上的顯存就是顯卡晶片所需要用到的緩存、硬碟上也有相對應的緩存、CPU有著最快的緩存(L1、L2、L3緩存等), 緩存就是資料交換的緩衝區(稱作Cache)。 緩存往往都是RAM(斷電即掉的非永久儲存), 它們的作用就是説明硬體更快地回應。 我們今天就來講一下, 關於最快的緩存——CPU緩存的那些事。

CPU緩存是什麼?

CPU緩存的定義為CPU與記憶體之間的臨時資料交換器, 它的出現是為了解決CPU運行處理速度與記憶體讀寫速度不匹配的矛盾——緩存的速度比記憶體的速度快多了。 CPU緩存一般直接跟CPU晶片集成或位於主機板匯流排互連的獨立晶片上。 (現階段的CPU緩存一般直接集成在CPU上)CPU往往需要重複處理相同的資料、重複執行相同的指令, 如果這部分資料、指令CPU能在CPU緩存中找到, CPU就不需要從記憶體或硬碟中再讀取資料、指令,

從而減少了整機的回應時間。

CPU-緩存-主記憶體圖示, 圖片來自:CPU Caches

CPU緩存速度和記憶體速度差多少?

我們來簡單地打個比方:如果CPU在L1一級緩存中找到所需要的資料要用的時間為3個週期左右, 那麼在L2二級緩存找到資料的時間就要10個週期左右, L3三級緩存所需時間為50個週期左右;如果要到記憶體上去找呢, 那就慢多了, 可能需要幾百個週期的時間。

I3-8300處理器技術規格

對CPU緩存有一定瞭解了嗎, 讓我們再深入一點。 以Intel為例, Intel官網上產品-處理器介面內對緩存的定義為:“CPU快取記憶體是處理器上的一個快速記憶區域。 英特爾智慧快取記憶體(SmartCache)是指可讓所有內核動態共用最後一級快取記憶體的架構。

”這裡就提及到了最後一級快取記憶體的概念, 即為CPU緩存中的L3(三級緩存), 那麼我們繼續來解釋一下什麼叫三級緩存, 分別又是指哪三級緩存。

CPU-緩存-主記憶體圖示, 圖片來自:CPU Caches

三級緩存(L1、L2、L3)是什麼?

以近代CPU的視角來說, 三級緩存(包括L1一級緩存、L2二級緩存、L3三級緩存)都是集成在CPU內的緩存,

它們的作用都是作為CPU與主記憶體之間的高速資料緩衝區, L1最靠近CPU核心;L2其次;L3再次。 運行速度方面:L1最快、L2次快、L3最慢;容量大小方面:L1最小、L2較大、L3最大。 CPU會先在最快的L1中尋找需要的資料, 找不到再去找次快的L2, 還找不到再去找L3, L3都沒有那就只能去記憶體找了。 L1、L2、L3可以說是各有特點, 下面我們就分開來講一下。

一級緩存(L1 Cache)

一級緩存這個名詞出現應該是在Intel公司Pentium處理器時代把緩存開始分類的時候, 當時在CPU內部集成的CPU緩存已經不能滿足整機的性能需求, 而製造工藝上的限制不能在CPU內部大幅提高緩存的數量, 所以出現了集成在主機板上的緩存, 當時人們把CPU內部集成的CPU緩存成為一級緩存, 在CPU外部主機板上的緩存稱為二級緩存。

Intel Pentium 4

而一級緩存其實還分為一級數據緩存(Data Cache, D-Cache, L1d)和一級指令緩存(Instruction Cache, I-Cache, L1i), 分別用於存放資料及執行資料的指令解碼, 兩者可同時被CPU訪問, 減少了CPU多核心、多執行緒爭用緩存造成的衝突, 提高了處理器的效能。 一般CPU的L1i和L1d具備相同的容量, 例如I7-8700K的L1即為32KB+32KB。

二級緩存(L2 Cache)

隨著CPU製造工藝的發展, 本來處於CPU外部的二級緩存也可以輕易地集成進CPU內部, 這種時候再用緩存是否處於CPU內部來判斷一二級緩存已經不再確切。 集成進CPU的L2二級緩存運行速率漸漸可以跟上CPU的運行速度了, , 其主要作用為當CPU在L1中沒讀取到所需要的資料時再把資料展示給CPU篩選(CPU未命中L1的情況下繼續在L2尋求命中, 緩存命中的工作原理我們稍後再講)。

L2二級緩存比L1一級緩存的容量要更大,但是L2的速率要更慢,為什麼呢?首先L2比L1要更遠離CPU核心,L1是最靠近CPU核心的緩存,CPU需要讀取L2的資料從物理距離上比L1要更遠;L2的容量比L1更大,打個簡單的比喻,在小盒子裡面找東西要比在大房間裡面找要方便快捷。這裡也可以看出,緩存並非越大越好,越靠近CPU核心的緩存運行速率越快越好,非最後一級緩存的緩存容量自然是夠用即可。

Core Duo酷睿雙核處理器

L2二級緩存實際上就是L1一級緩存跟主記憶體之間的緩衝器,在2006年的時間點上,Intel和AMD當家在售的幾款處理器可以看出他們對最後一級緩存不同的見解:Intel Core Duo不同于它的前輩Pentium D、EE,採用了雙核心共用的2M L2二級緩存,是屬於當時最先二級緩存架構,即“Smart Cache”共用緩存技術,這種技術沿用到以後的Intel推出的所有多核心處理器上;而AMD Athlon 64 X2處理器則是每個CPU核心都具備獨立的二級緩存,Manchester核心的處理器為每核心512KB、Toledo核心為每核心1MB,兩個核心之間的緩存的資料同步是通過CPU內置的SRI(系統請求介面)控制,這樣的資料延遲及佔用資源情況都要比Intel的Pentium D、EE核心要好,但還是比不上Core為代表的Smart Cache緩存共用。

三級緩存(L3 Cache)

最初出現L3三級緩存的應該是AMD的K6-III處理器,當時受限於製造工藝,L3只能集成在主機板上。然後Intel首次出現L3三級緩存的是Itanium安騰伺服器處理器,接著就是P4EE和至強MP。L3三級緩存的出現其實對CPU性能提升呈一個爬坡曲線——L3從0到2M的情況CPU性能提升非常明顯,L3從2M到6M提升可能就只有10%不到了,這是在近代CPU多核共用L3的情況下;當L3集成進CPU正式成為CPU內部緩存後,CPU處理資料時只有5%需要在記憶體中調用資料,進一步地減少了記憶體延遲,使系統的回應更為快速。

Intel Nehalem L3 SmartCache示意圖

同理,L3即為L2與主記憶體之間的緩衝器,主要體現在提升處理器大資料處理方面的性能,對遊戲表現方面有較大的幫助。那麼也許有人就會問了,是不是選擇CPU的時候看准L3買,哪個CPU的L3大就買哪個?非也,只有同架構的情況下這種比較才具有意義,先舉個比較久遠的例子:Intel具備1MB L3的Xeon MP處理器仍然不是AMD沒有L3的皓龍處理器對手,再來個現有的:Intel I7-8700K 12MB L3和AMD Threadripper 1950X 32MB L3相比,自然是32MB比12MB大,但是平均下來也是一個核心2MB L3,性能就見仁見智了。

CPU緩存是怎樣幫助CPU工作的呢

知道了L1、L2、L3的由來,我們再深入地瞭解一下CPU緩存是怎麼幫助CPU提高工作效率的。

局限性原理,圖片來自:CMU

由於資料的局限性,CPU往往需要在短時間內重複多次讀取資料,記憶體的運行頻率自然是遠遠跟不上CPU的處理速度的,怎麼辦呢?緩存的重要性就凸顯出來了,CPU可以避開記憶體在緩存裡讀取到想要的資料,稱之為命中(hit)。L1的運行速度很快,但是它的資料容量很小,CPU能在L1裡命中的概率大概在80%左右——日常使用的情況下;L2、L3的機制也類似如此,這樣一來,CPU需要在記憶體中讀取的資料大概為5%-10%,其餘資料命中全部可以在L1、L2、L3中做到,大大減少了系統的回應時間,總的來說,所有CPU讀取資料的順序都是先緩存再記憶體。

L1、L2、L3緩存跟記憶體速度相差很大,它們構成上的不同導致了其速度的差距,那麼CPU緩存和記憶體分別是怎樣構成的呢?

緩存SRAM與記憶體DRAM的區別

CPU緩存基本由SRAM(Static RAM,靜態RAM)構成,記憶體的DRAM其實是SDRAM(同步動態隨機儲存器),是DRAM(Dynamic RAM,動態)的一種。

DRAM

DRAM只含一個電晶體和一個電容器,集成度非常高,可以輕鬆做出大容量(記憶體),但是因為靠電容器來儲存資訊,所以需要不斷刷新補充電容器的電荷,充電放電之間的時間差導致了DRAM比SRAM的反應要緩慢得多。

SRAM

SRAM相比DRAM的複雜度就高了不止一籌,所以導致SRAM的集成度很低——前期CPU緩存不能集成進CPU內部也有這個原因。SRAM的特點就是快,有電就有資料,不需要刷新時間所以凸顯其資料傳輸速度很快,缺點就是佔據面積大、成本低。假如一個DRAM佔據一個單位的地方,一個SRAM就要佔據六個單位的地方,差別還是挺大的。

番外:L4四級緩存和eDRAM

I7-4750H

並不是每個CPU都會使用SRAM作為CPU緩存,IBM的Power系列處理器就使用了eDRAM作為CPU緩存;我們再看看Intel Haswell I7-4750H這個CPU,其主要受關注的地方在於CPU內嵌入了128MB的eDRAM作為顯存讓核心顯卡Iris Pro 5200使用,在不使用核心顯卡的時候,128MB eDRAM將會成為處理器的L4四級緩存。當然了,I7-4750H多了L4之後在處理器性能上也沒提高多少,eDram緩存的主要作用還是在於給核心顯卡當顯存上。

L2二級緩存比L1一級緩存的容量要更大,但是L2的速率要更慢,為什麼呢?首先L2比L1要更遠離CPU核心,L1是最靠近CPU核心的緩存,CPU需要讀取L2的資料從物理距離上比L1要更遠;L2的容量比L1更大,打個簡單的比喻,在小盒子裡面找東西要比在大房間裡面找要方便快捷。這裡也可以看出,緩存並非越大越好,越靠近CPU核心的緩存運行速率越快越好,非最後一級緩存的緩存容量自然是夠用即可。

Core Duo酷睿雙核處理器

L2二級緩存實際上就是L1一級緩存跟主記憶體之間的緩衝器,在2006年的時間點上,Intel和AMD當家在售的幾款處理器可以看出他們對最後一級緩存不同的見解:Intel Core Duo不同于它的前輩Pentium D、EE,採用了雙核心共用的2M L2二級緩存,是屬於當時最先二級緩存架構,即“Smart Cache”共用緩存技術,這種技術沿用到以後的Intel推出的所有多核心處理器上;而AMD Athlon 64 X2處理器則是每個CPU核心都具備獨立的二級緩存,Manchester核心的處理器為每核心512KB、Toledo核心為每核心1MB,兩個核心之間的緩存的資料同步是通過CPU內置的SRI(系統請求介面)控制,這樣的資料延遲及佔用資源情況都要比Intel的Pentium D、EE核心要好,但還是比不上Core為代表的Smart Cache緩存共用。

三級緩存(L3 Cache)

最初出現L3三級緩存的應該是AMD的K6-III處理器,當時受限於製造工藝,L3只能集成在主機板上。然後Intel首次出現L3三級緩存的是Itanium安騰伺服器處理器,接著就是P4EE和至強MP。L3三級緩存的出現其實對CPU性能提升呈一個爬坡曲線——L3從0到2M的情況CPU性能提升非常明顯,L3從2M到6M提升可能就只有10%不到了,這是在近代CPU多核共用L3的情況下;當L3集成進CPU正式成為CPU內部緩存後,CPU處理資料時只有5%需要在記憶體中調用資料,進一步地減少了記憶體延遲,使系統的回應更為快速。

Intel Nehalem L3 SmartCache示意圖

同理,L3即為L2與主記憶體之間的緩衝器,主要體現在提升處理器大資料處理方面的性能,對遊戲表現方面有較大的幫助。那麼也許有人就會問了,是不是選擇CPU的時候看准L3買,哪個CPU的L3大就買哪個?非也,只有同架構的情況下這種比較才具有意義,先舉個比較久遠的例子:Intel具備1MB L3的Xeon MP處理器仍然不是AMD沒有L3的皓龍處理器對手,再來個現有的:Intel I7-8700K 12MB L3和AMD Threadripper 1950X 32MB L3相比,自然是32MB比12MB大,但是平均下來也是一個核心2MB L3,性能就見仁見智了。

CPU緩存是怎樣幫助CPU工作的呢

知道了L1、L2、L3的由來,我們再深入地瞭解一下CPU緩存是怎麼幫助CPU提高工作效率的。

局限性原理,圖片來自:CMU

由於資料的局限性,CPU往往需要在短時間內重複多次讀取資料,記憶體的運行頻率自然是遠遠跟不上CPU的處理速度的,怎麼辦呢?緩存的重要性就凸顯出來了,CPU可以避開記憶體在緩存裡讀取到想要的資料,稱之為命中(hit)。L1的運行速度很快,但是它的資料容量很小,CPU能在L1裡命中的概率大概在80%左右——日常使用的情況下;L2、L3的機制也類似如此,這樣一來,CPU需要在記憶體中讀取的資料大概為5%-10%,其餘資料命中全部可以在L1、L2、L3中做到,大大減少了系統的回應時間,總的來說,所有CPU讀取資料的順序都是先緩存再記憶體。

L1、L2、L3緩存跟記憶體速度相差很大,它們構成上的不同導致了其速度的差距,那麼CPU緩存和記憶體分別是怎樣構成的呢?

緩存SRAM與記憶體DRAM的區別

CPU緩存基本由SRAM(Static RAM,靜態RAM)構成,記憶體的DRAM其實是SDRAM(同步動態隨機儲存器),是DRAM(Dynamic RAM,動態)的一種。

DRAM

DRAM只含一個電晶體和一個電容器,集成度非常高,可以輕鬆做出大容量(記憶體),但是因為靠電容器來儲存資訊,所以需要不斷刷新補充電容器的電荷,充電放電之間的時間差導致了DRAM比SRAM的反應要緩慢得多。

SRAM

SRAM相比DRAM的複雜度就高了不止一籌,所以導致SRAM的集成度很低——前期CPU緩存不能集成進CPU內部也有這個原因。SRAM的特點就是快,有電就有資料,不需要刷新時間所以凸顯其資料傳輸速度很快,缺點就是佔據面積大、成本低。假如一個DRAM佔據一個單位的地方,一個SRAM就要佔據六個單位的地方,差別還是挺大的。

番外:L4四級緩存和eDRAM

I7-4750H

並不是每個CPU都會使用SRAM作為CPU緩存,IBM的Power系列處理器就使用了eDRAM作為CPU緩存;我們再看看Intel Haswell I7-4750H這個CPU,其主要受關注的地方在於CPU內嵌入了128MB的eDRAM作為顯存讓核心顯卡Iris Pro 5200使用,在不使用核心顯卡的時候,128MB eDRAM將會成為處理器的L4四級緩存。當然了,I7-4750H多了L4之後在處理器性能上也沒提高多少,eDram緩存的主要作用還是在於給核心顯卡當顯存上。

Next Article
喜欢就按个赞吧!!!
点击关闭提示