CPU一級(jí)緩存是什么
CPU一級(jí)緩存是什么
CPU一級(jí)緩存是什么?為了描述和探索虛擬機(jī)檢測(cè)方法,給出了虛擬機(jī)檢測(cè)的基本思想并介紹了幾種已有檢測(cè)方法,考慮到檢測(cè)方法的通用性,提出了基于CPU緩存(Cache)操作模式差異的虛擬機(jī)檢測(cè)方法。下面就由學(xué)習(xí)啦小編來給大家說說CPU一級(jí)緩存是什么,歡迎大家前來閱讀
CPU一級(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)很長(zhǎng)時(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與緩存間的帶寬引起的。
緩存的工作原理是當(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í)基本無需等待??偟膩碚f,CPU讀取數(shù)據(jù)的順序是先緩存后內(nèi)存。
目前緩存基本上都是采用SRAM存儲(chǔ)器,SRAM是英文Static RAM的縮寫,它是一種具有靜志存取功能的存儲(chǔ)器,不需要刷新電路即能保存它內(nèi)部存儲(chǔ)的數(shù)據(jù)。不像DRAM內(nèi)存那樣需要刷新電路,每隔一段時(shí)間,固定要對(duì)DRAM刷新充電一次,否則內(nèi)部的數(shù)據(jù)即會(huì)消失,因此SRAM具有較高的性能,但是SRAM也有它的缺點(diǎn),即它的集成度較低,相同容量的DRAM內(nèi)存可以設(shè)計(jì)為較小的體積,但是SRAM卻需要很大的體積,這也是目前不能將緩存容量做得太大的重要原因。它的特點(diǎn)歸納如下:優(yōu)點(diǎn)是節(jié)能、速度快、不必配合內(nèi)存刷新電路、可提高整體的工作效率,缺點(diǎn)是集成度低、相同的容量體積較大、而且價(jià)格較高,只能少量用于關(guān)鍵性系統(tǒng)以提高效率。
按照數(shù)據(jù)讀取順序和與CPU結(jié)合的緊密程度,CPU緩存可以分為一級(jí)緩存,二級(jí)緩存,部分高端CPU還具有三級(jí)緩存,每一級(jí)緩存中所儲(chǔ)存的全部數(shù)據(jù)都是下一級(jí)緩存的一部分,這三種緩存的技術(shù)難度和制造成本是相對(duì)遞減的,所以其容量也是相對(duì)遞增的。當(dāng)CPU要讀取一個(gè)數(shù)據(jù)時(shí),首先從一級(jí)緩存中查找,如果沒有找到再從二級(jí)緩存中查找,如果還是沒有就從三級(jí)緩存或內(nèi)存中查找。
一般來說,每級(jí)緩存的命中率大概都在80%左右,也就是說全部數(shù)據(jù)量的80%都可以在一級(jí)緩存中找到,只剩下20%的總數(shù)據(jù)量才需要從二級(jí)緩存、三級(jí)緩存或內(nèi)存中讀取,由此可見一級(jí)緩存是整個(gè)CPU緩存架構(gòu)中最為重要的部分。
一級(jí)緩存(Level 1 Cache)簡(jiǎn)稱L1 Cache,位于CPU內(nèi)核的旁邊,是與CPU結(jié)合最為緊密的CPU緩存,也是歷史上最早出現(xiàn)的CPU緩存。由于一級(jí)緩存的技術(shù)難度和制造成本最高,提高容量所帶來的技術(shù)難度增加和成本增加非常大,所帶來的性能提升卻不明顯,性價(jià)比很低,而且現(xiàn)有的一級(jí)緩存的命中率已經(jīng)很高,所以一級(jí)緩存是所有緩存中容量最小的,比二級(jí)緩存要小得多。
一般來說,一級(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í)緩存表示方法以此類推。
Intel的采用NetBurst架構(gòu)的CPU(最典型的就是Pentium 4)的一級(jí)緩存有點(diǎn)特殊,使用了新增加的一種一級(jí)追蹤緩存(Execution Trace Cache,T-Cache或ETC)來替代一級(jí)指令緩存,容量為12KμOps,表示能存儲(chǔ)12K條即12000條解碼后的微指令。
一級(jí)追蹤緩存與一級(jí)指令緩存的運(yùn)行機(jī)制是不相同的,一級(jí)指令緩存只是對(duì)指令作即時(shí)的解碼而并不會(huì)儲(chǔ)存這些指令,而一級(jí)追蹤緩存同樣會(huì)將一些指令作解碼,這些指令稱為微指令(micro-ops),而這些微指令能儲(chǔ)存在一級(jí)追蹤緩存之內(nèi),無需每一次都作出解碼的程序,因此一級(jí)追蹤緩存能有效地增加在高工作頻率下對(duì)指令的解碼能力,而μOps就是micro-ops,也就是微型操作的意思。它以很高的速度將μops提供給處理器核心。
Intel NetBurst微型架構(gòu)使用執(zhí)行跟蹤緩存,將解碼器從執(zhí)行循環(huán)中分離出來。這個(gè)跟蹤緩存以很高的帶寬將uops提供給核心,從本質(zhì)上適于充分利用軟件中的指令級(jí)并行機(jī)制。Intel并沒有公布一級(jí)追蹤緩存的實(shí)際容量,只知道一級(jí)追蹤緩存能儲(chǔ)存12000條微指令(micro-ops)。所以,不能簡(jiǎn)單地用微指令的數(shù)目來比較指令緩存的大小。
實(shí)際上,單核心的NetBurst架構(gòu)CPU使用8Kμops的緩存已經(jīng)基本上夠用了,多出的4kμops可以大大提高緩存命中率。而如果要使用超線程技術(shù)的話,12KμOps就會(huì)有些不夠用,這就是為什么有時(shí)候Intel處理器在使用超線程技術(shù)時(shí)會(huì)導(dǎo)致性能下降的重要原因。
例如Northwood核心的一級(jí)緩存為8KB+12KμOps,就表示其一級(jí)數(shù)據(jù)緩存為8KB,一級(jí)追蹤緩存為12KμOps;而Prescott核心的一級(jí)緩存為16KB+12KμOps,就表示其一級(jí)數(shù)據(jù)緩存為16KB,一級(jí)追蹤緩存為12KμOps。在這里12KμOps絕對(duì)不等于12KB,單位都不同,一個(gè)是μOps,一個(gè)是Byte(字節(jié)),而且二者的運(yùn)行機(jī)制完全不同。所以那些把Intel的CPU一級(jí)緩存簡(jiǎn)單相加,例如把Northwood核心說成是20KB一級(jí)緩存,把Prescott核心說成是28KB一級(jí)緩存,并且據(jù)此認(rèn)為Intel處理器的一級(jí)緩存容量遠(yuǎn)遠(yuǎn)低于AMD處理器128KB的一級(jí)緩存容量的看法是完全錯(cuò)誤的,二者不具有可比性。
在架構(gòu)有一定區(qū)別的CPU對(duì)比中,很多緩存已經(jīng)難以找到對(duì)應(yīng)的東西,即使類似名稱的緩存在設(shè)計(jì)思路和功能定義上也有區(qū)別了,此時(shí)不能用簡(jiǎn)單的算術(shù)加法來進(jìn)行對(duì)比;而在架構(gòu)極為近似的CPU對(duì)比中,分別對(duì)比各種功能緩存大小才有一定的意義。