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