取環(huán) CPU的一二三級緩存有什么用處?
CPU的一二三級緩存有什么用處?先看看為什么CPU會有L1、L2、L3這樣的緩存設計,正如下圖所示,現(xiàn)在的處理器太快了,而從內存中讀取數(shù)據(jù)實在太慢(一個是因為內存本身速度不夠,另一個是因為它離CPU太
CPU的一二三級緩存有什么用處?
先看看為什么CPU會有L1、L2、L3這樣的緩存設計,正如下圖所示,現(xiàn)在的處理器太快了,而從內存中讀取數(shù)據(jù)實在太慢(一個是因為內存本身速度不夠,另一個是因為它離CPU太遠了,總的來說需要讓CPU等待幾十甚至幾百個時鐘周期),這個時候為了保證CPU的速度,就需要延遲更小速度更快的內存提供幫助,而這就是緩存。
現(xiàn)在讓我們看看多級緩存(L1,L2,L3)的好處,而不僅僅是單個緩存。
1、高速緩存越靠近ALU等核心單元,訪問速度就越快,所以會有靠近核心的L1緩存,雖然它小,但它真的快??;
2、高速緩存的容量越大,緩存命中(Cache hit)就越高,所以當L1沒有命中時,需要一個容量更大的但速度也不慢的緩存來提供數(shù)據(jù),這就是L2;
3、更大的緩存意味著更高的命中,同時也意味著更高的成本、更慢的速度、更多的晶體管,更大的面積,因此它不可能靠近所有核心單元,這就是L3;
這就是CPU緩存的層次結構,基于性能、成本、設計上的一個平衡,L1緩存可以最大化單個內核的位置和速度(甚至分離指令和數(shù)據(jù))。L2高速緩存會更大些,命中更高,速度稍慢,一般還是位于每個核心內,而L3緩存通常在系統(tǒng)中的所有內核間共享,提供合理的速度和容量。比如英特爾Core i7-8700K它的L1大小只有64K,還分為32K數(shù)據(jù)和32K指令,L2大小為256K,L3達到12MB。
現(xiàn)代CPU的高速緩存體系結構是非常復雜的,其中包括硬件預取和數(shù)據(jù)轉發(fā),以便能提供最佳的高速緩存命中機會。有些CPU甚至還加入了L4緩存。
緩存什么意思?
在計算中,緩存是存儲數(shù)據(jù)的硬件或軟件組件,以便將來可以提供更快的數(shù)據(jù)請求;存儲在高速緩存中的數(shù)據(jù)可能是早期計算的結果,也可能是存儲在其他地方的數(shù)據(jù)的副本。當可以在緩存中找到請求的數(shù)據(jù)時,會發(fā)生緩存命中,而當無法找到時,則會發(fā)生緩存丟失。緩存命中是通過從緩存中讀取數(shù)據(jù)來實現(xiàn)的,這比重新計算結果或從較慢的數(shù)據(jù)存儲中讀取數(shù)據(jù)要快;因此,緩存中提供的請求越多,系統(tǒng)執(zhí)行得越快。
為了節(jié)省成本并能夠有效利用數(shù)據(jù),緩存必須相對較小。然而,緩存已經(jīng)在許多計算領域得到證明,這是因為典型的計算機應用程序訪問數(shù)據(jù)時具有高度的訪問局部性。這種訪問模式表現(xiàn)出時間局部性(請求最近已經(jīng)請求的數(shù)據(jù))以及空間局部性(請求物理上存儲在已經(jīng)請求的數(shù)據(jù)附近的數(shù)據(jù))。