我們知道,CPU性能是主要由CPU構(gòu)架、核心線程數(shù)量、主頻、緩存等諸多因素共同決定,而“緩存”是很多網(wǎng)友容易忽視的一個地方。
你知道CPU緩存是什么意思嗎?什么是二極緩存?一二三級緩存又分別是什么,本文主要是關(guān)于二極緩存的介紹,以及一二三級緩存的區(qū)分。
二極緩存
CPU緩存(Cache Memory)位于CPU與內(nèi)存之間的臨時存儲器,它的容量比內(nèi)存小但交換速度快。在緩存中的數(shù)據(jù)是內(nèi)存中的一小部分,但這一小部分是短時間內(nèi)CPU即將訪問的,當(dāng)CPU調(diào)用大量數(shù)據(jù)時,就可避開內(nèi)存直接從緩存中調(diào)用,從而加快讀取速度。最初緩存只有一級,二級緩存(L2 CACHE)出現(xiàn)是為了協(xié)調(diào)一級緩存與內(nèi)存之間的速度。二級緩存比一級緩存速度更慢,容量更大,主要就是做一級緩存和內(nèi)存之間數(shù)據(jù)臨時交換的地方用。實際上,現(xiàn)在Intel和AMD處理器在一級緩存的邏輯結(jié)構(gòu)設(shè)計上有所不同,所以二級緩存對CPU性能的影響也不盡相同。
緩存的工作原理是當(dāng)CPU要讀取一個數(shù)據(jù)時,首先從緩存中查找,如果找到就立即讀取并送給CPU處理;如果沒有找到,就用相對慢的速度從內(nèi)存中讀取并送給CPU處理,同時把這個數(shù)據(jù)所在的數(shù)據(jù)塊調(diào)入緩存中,可以使得以后對整塊數(shù)據(jù)的讀取都從緩存中進(jìn)行,不必再調(diào)用內(nèi)存。
正是這樣的讀取機(jī)制使CPU讀取緩存的命中率非常高(大多數(shù)CPU可達(dá)90%左右),也就是說CPU下一次要讀取的數(shù)據(jù)90%都在緩存中,只有大約10%需要從內(nèi)存讀取。這大大節(jié)省了CPU直接讀取內(nèi)存的時間,也使CPU讀取數(shù)據(jù)時基本無需等待。總的來說,CPU讀取數(shù)據(jù)的順序是先緩存后內(nèi)存。 最早先的CPU緩存是個整體的,而且容量很低,英特爾公司從Pentium時代開始把緩存進(jìn)行了分類。當(dāng)時集成在CPU內(nèi)核中的緩存已不足以滿足CPU的需求,而制造工藝上的限制又不能大幅度提高緩存的容量。因此出現(xiàn)了集成在與CPU同一塊電路板上或主板上的緩存,此時就把 CPU內(nèi)核集成的緩存稱為一級緩存,而外部的稱為二級緩存。一級緩存中還分?jǐn)?shù)據(jù)緩存(Data Cache,D-Cache)和指令緩存(Instruction Cache,I-Cache)。二者分別用來存放數(shù)據(jù)和執(zhí)行這些數(shù)據(jù)的指令,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了處理器效能。
二級緩存是什么意思
二級緩存就是一級緩存的緩沖器:一級緩存制造成本很高因此它的容量有限,二級緩存的作用就是存儲那些CPU處理時需要用到、一級緩存又無法存儲的數(shù)據(jù)。同樣道理,三級緩存和內(nèi)存可以看作是二級緩存的緩沖器,它們的容量遞增,但單位制造成本卻遞減。需要注意的是,無論是二級緩存、三級緩存還是內(nèi)存都不能存儲處理器操作的原始指令,這些指令只能存儲在CPU的一級指令緩存中,而余下的二級緩存、三級緩存和內(nèi)存僅用于存儲CPU所需數(shù)據(jù)。
為什么要分一二三級緩存
存儲器層次結(jié)構(gòu)
一般來說,每級緩存的命中率大概都在80%左右,也就是說全部數(shù)據(jù)量的80%都可以在一級緩存中找到,只剩下20%的總數(shù)據(jù)量才需要從二級緩存、三級緩存或內(nèi)存中讀取,由此可見一級緩存是整個CPU緩存架構(gòu)中最為重要的部分。
但是,現(xiàn)在CPU的一級緩存幾乎都一樣,容量都比較小,多為64K,因此如今的CPU基本很少提一級緩存,主要是大家都一樣,雖然最重要,但卻不值得一提。
二級緩存,對CPU是很重要的,不過很多朋友會發(fā)現(xiàn),如今很多Intel的CPU也都不怎么提二級緩存,只標(biāo)注三級緩存。而AMD的不少新CPU也多為標(biāo)注三級緩存為主,二級緩存只有部分型號會標(biāo)注,比如AMD銳龍5 2600X提供3M三級緩存和16M三級緩存,R7 2700X則也只有16M三級緩存。而Intel酷睿i3 8100則只有6M三級緩存,高端的i7 8700K則只標(biāo)注12MB。
因此,在目前的新款CPU中,二級緩存的重要性在減弱,三級緩存則成為重點(diǎn)。
現(xiàn)代CPU的高速緩存體系結(jié)構(gòu)是非常復(fù)雜的,其中包括硬件預(yù)取和數(shù)據(jù)轉(zhuǎn)發(fā),以便能提供最佳的高速緩存命中機(jī)會,有些CPU甚至還加入了L4緩存。
一二三級緩存的區(qū)分
一級緩存和二級緩存的區(qū)別:
主要的不同是它們的作用范圍不同。
一級緩存是session級別的。
也就是只有在同一個session里緩存才起作用,當(dāng)這個session關(guān)閉后這個緩存就不存在了。
而二級緩存是sessionFactory級別的。
其緩存對同一個sessionFactory生產(chǎn)出來的session都有效,二級緩存我們通常使用其他的一些開源組件,比如hibernate經(jīng)常使用的就是ECache,這個緩存在整個應(yīng)用服務(wù)器中都會有效的。
首先要明白緩存是干什么的,緩存就是要將一些經(jīng)常使用的數(shù)據(jù)緩存到內(nèi)存或者各種儲存介質(zhì)中,當(dāng)再次使用時可以不用去數(shù)據(jù)庫中查詢,減少與數(shù)據(jù)庫的交互,提高性能。
再說明一級與二級緩存的作用:一級緩存是Session級別的,也就是說在一個事務(wù)中才會啟作用。比如在一個事務(wù)中同時查詢同一個對象,則不會兩次去數(shù)據(jù)庫中查詢。
而二級緩存是sessionFactory級別的,不同的事務(wù)之間是可以共享的,有些權(quán)限,當(dāng)用戶首次登陸后便將關(guān)聯(lián)的權(quán)限放到二級緩存中,這樣每次需要權(quán)限時就無需再查詢數(shù)據(jù)庫了。
最后再說明為什么這樣設(shè)計:一般情況下,我們查詢的數(shù)據(jù)一般是實時的,使用二級緩存肯定不行,使用一級緩存既利用了緩存又不會影響實時。
使用二級緩存是為了存儲一些比較穩(wěn)定的數(shù)據(jù),如權(quán)限,只有在用戶修改了權(quán)限且重新登錄時才能生效
cpu中的一級緩存和二級緩存和三級緩存
一級緩存是什么:
一級緩存都內(nèi)置在CPU內(nèi)部并與CPU同速運(yùn)行,可以有效的提高CPU的運(yùn)行效率。一級緩存越大,CPU的運(yùn)行效率越高,但受到CPU內(nèi)部結(jié)構(gòu)的限制,一級緩存的容量都很小。
CPU緩存(Cache Memory)是位于CPU與內(nèi)存之間的臨時存儲器,它的容量比內(nèi)存小的多但是交換速度卻比內(nèi)存要快得多。緩存的出現(xiàn)主要是為了解決CPU運(yùn)算速度與內(nèi)存讀寫速度不匹配的矛盾,因為CPU運(yùn)算速度要比內(nèi)存讀寫速度快很多,這樣會使CPU花費(fèi)很長時間等待數(shù)據(jù)到來或把數(shù)據(jù)寫入內(nèi)存。在緩存中的數(shù)據(jù)是內(nèi)存中的一小部分,但這一小部分是短時間內(nèi)CPU即將訪問的,當(dāng)CPU調(diào)用大量數(shù)據(jù)時,就可避開內(nèi)存直接從緩存中調(diào)用,從而加快讀取速度。由此可見,在CPU中加入緩存是一種高效的解決方案,這樣整個內(nèi)存儲器(緩存+內(nèi)存)就變成了既有緩存的高速度,又有內(nèi)存的大容量的存儲系統(tǒng)了。緩存對CPU的性能影響很大,主要是因為CPU的數(shù)據(jù)交換順序和CPU與緩存間的帶寬引起的。
分類
一級緩存可以分為一級數(shù)據(jù)緩存(Data Cache,D-Cache)和一級指令緩存(Instruction Cache,I-Cache)。二者分別用來存放數(shù)據(jù)以及對執(zhí)行這些數(shù)據(jù)的指令進(jìn)行即時解碼,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了處理器效能。目前大多數(shù)CPU的一級數(shù)據(jù)緩存和一級指令緩存具有相同的容量,例如AMD的Athlon XP就具有64KB的一級數(shù)據(jù)緩存和64KB的一級指令緩存,其一級緩存就以64KB+64KB來表示,其余的CPU的一級緩存表示方法以此類推。
二級緩存是什么:
CPU緩存(Cache Memory)位于CPU與內(nèi)存之間的臨時存儲器,它的容量比內(nèi)存小但交換速度快。在緩存中的數(shù)據(jù)是內(nèi)存中的一小部分,但這一小部分是短時間內(nèi)CPU即將訪問的,當(dāng)CPU調(diào)用大量數(shù)據(jù)時,就可避開內(nèi)存直接從緩存中調(diào)用,從而加快讀取速度。最初緩存只有一級,二級緩存(L2 CACHE)出現(xiàn)是為了協(xié)調(diào)一級緩存與內(nèi)存之間的速度。二級緩存比一級緩存速度更慢,容量更大,主要就是做一級緩存和內(nèi)存之間數(shù)據(jù)臨時交換的地方用。實際上,現(xiàn)在Intel和AMD處理器在一級緩存的邏輯結(jié)構(gòu)設(shè)計上有所不同,所以二級緩存對CPU性能的影響也不盡相同。
工作原理
緩存的工作原理是當(dāng)CPU要讀取一個數(shù)據(jù)時,首先從緩存中查找,如果找到就立即讀取并送給CPU處理;如果沒有找到,就用相對慢的速度從內(nèi)存中讀取并送給CPU處理,同時把這個數(shù)據(jù)所在的數(shù)據(jù)塊調(diào)入緩存中,可以使得以后對整塊數(shù)據(jù)的讀取都從緩存中進(jìn)行,不必再調(diào)用內(nèi)存。
三級緩存是什么:
三級緩存是為讀取二級緩存后未命中的數(shù)據(jù)設(shè)計的—種緩存,在擁有三級緩存的CPU中,只有約5%的數(shù)據(jù)需要從內(nèi)存中調(diào)用,這進(jìn)一步提高了CPU的效率。其運(yùn)作原理在于使用較快速的儲存裝置保留一份從慢速儲存裝置中所讀取數(shù)據(jù)且進(jìn)行拷貝,當(dāng)有需要再從較慢的儲存體中讀寫數(shù)據(jù)時,緩存(cache)能夠使得讀寫的動作先在快速的裝置上完成,如此會使系統(tǒng)的響應(yīng)較為快速。
注意:只有一級緩存是在CPU中的,一級緩存的讀取需要2-4個時鐘周期;二級緩存的讀取需要10個左右的時鐘周期;而三級緩存需要30-40個時鐘周期,但是容量一次增大。
結(jié)語
以上就是關(guān)于二極緩存以及一二三級緩存的區(qū)分介紹了,關(guān)于二極緩存可深究的地方還有很多,在本文中就不再贅述了,希望通過本文能讓你對二極緩存有更深的理解。
評論