Ⅰ 指令緩存的一級指令緩存
緩存基本上都是採用SRAM存儲器,SRAM是英文Static RAM的縮寫,它是一種具有靜志存取功能的存儲器,不需要刷新電路即能保存它內部存儲的數據。不像DRAM內存那樣需要刷新電路,每隔一段時間,固定要對DRAM刷新充電一次,否則內部的數據即會消失,因此SRAM具有較高的性能,但是SRAM也有它的缺點,即它的集成度較低,相同容量的DRAM內存可以設計為較小的體積,但是SRAM卻需要很大的體積,這也是不能將緩存容量做得太大的重要原因。它的特點歸納如下:優點是節能、速度快、不必配合內存刷新電路、可提高整體的工作效率,缺點是集成度低、相同的容量體積較大、而且價格較高,只能少量用於關鍵性系統以提高效率。
按照數據讀取順序和與CPU結合的緊密程度,CPU緩存可以分為一級緩存,二級緩存,部分高端CPU還具有三級緩存,每一級緩存中所儲存的全部數據都是下一級緩存的一部分,這三種緩存的技術難度和製造成本是相對遞減的,所以其容量也是相對遞增的。當CPU要讀取一個數據時,首先從一級緩存中查找,如果沒有找到再從二級緩存中查找,如果還是沒有就從三級緩存或內存中查找。一般來說,每級緩存的命中率大概都在80%左右,也就是說全部數據量的80%都可以在一級緩存中找到,只剩下20%的總數據量才需要從二級緩存、三級緩存或內存中讀取,由此可見一級緩存是整個CPU緩存架構中最為重要的部分。
一級緩存(Level 1 Cache)簡稱L1 Cache,位於CPU內核的旁邊,是與CPU結合最為緊密的CPU緩存,也是歷史上最早出現的CPU緩存。由於一級緩存的技術難度和製造成本最高,提高容量所帶來的技術難度增加和成本增加非常大,所帶來的性能提升卻不明顯,性價比很低,而且現有的一級緩存的命中率已經很高,所以一級緩存是所有緩存中容量最小的,比二級緩存要小得多。
一般來說,一級緩存可以分為一級數據緩存(Data Cache,D-Cache)和一級指令緩存(Instruction Cache,I-Cache)。二者分別用來存放數據以及對執行這些數據的指令進行即時解碼,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了處理器效能。大多數CPU的一級數據緩存和一級指令緩存具有相同的容量,例如AMD的Athlon XP就具有64KB的一級數據緩存和64KB的一級指令緩存,其一級緩存就以64KB+64KB來表示,其餘的CPU的一級緩存表示方法以此類推。
Intel的採用NetBurst架構的CPU(最典型的就是Pentium 4)的一級緩存有點特殊,使用了新增加的一種一級追蹤緩存(Execution Trace Cache,T-Cache或ETC)來替代一級指令緩存,容量為12KμOps,表示能存儲12K條即12000條解碼後的微指令。一級追蹤緩存與一級指令緩存的運行機制是不相同的,一級指令緩存只是對指令作即時的解碼而並不會儲存這些指令,而一級追蹤緩存同樣會將一些指令作解碼,這些指令稱為微指令(micro-ops),而這些微指令能儲存在一級追蹤緩存之內,無需每一次都作出解碼的程序,因此一級追蹤緩存能有效地增加在高工作頻率下對指令的解碼能力,而μOps就是micro-ops,也就是微型操作的意思。它以很高的速度將μops提供給處理器核心。Intel NetBurst微型架構使用執行跟蹤緩存,將解碼器從執行循環中分離出來。這個跟蹤緩存以很高的帶寬將uops提供給核心,從本質上適於充分利用軟體中的指令級並行機制。Intel並沒有公布一級追蹤緩存的實際容量,只知道一級追蹤緩存能儲存12000條微指令(micro-ops)。所以,我們不能簡單地用微指令的數目來比較指令緩存的大小。實際上,單核心的NetBurst架構CPU使用8Kμops的緩存已經基本上夠用了,多出的4kμops可以大大提高緩存命中率。而如果要使用超線程技術的話,12KμOps就會有些不夠用,這就是為什麼有時候Intel處理器在使用超線程技術時會導致性能下降的重要原因 。
Ⅱ 指令緩存的CPU的L1指令緩存和L1高速緩存的關系
L1高速緩存,也就是我們經常說的一級高速緩存。在CPU裡面內置了高速緩存可以提高CPU的運行效率。內置的L1高速緩存的容量和結構對CPU的性能影響較大,不過高速緩沖存儲器均由靜態RAM組成,結構較復雜,在CPU管芯面積不能太大的情況下,L1級高速緩存的容量不可能做得太大。採用回寫(Write Back)結構的高速緩存。它對讀和寫*作均有可提供緩存。而採用寫通(Write-through)結構的高速緩存,僅對讀*作有效。在486以上的計算機中基本採用了回寫式高速緩存。在流行的處理器中,奔騰Ⅲ和Celeron處理器擁有32KB的L1高速緩存,奔騰4為8KB,而AMD的Duron和Athlon處理器的L1高速緩存高達128KB。
L2高速緩存,指CPU第二層的高速緩存,第一個採用L2高速緩存的是奔騰 Pro處理器,它的L2高速緩存和CPU運行在相同頻率下的,但成本昂貴,市場生命很短,所以其後奔騰 II的L2高速緩存運行在相當於CPU頻率一半下的。接下來的Celeron處理器又使用了和CPU同速運行的L2高速緩存,現在流行的CPU,無論是AthlonXP和奔騰4,其L2高速緩存都是和CPU同速運行的。除了速度以外,L2高速緩存容量也會影響CPU的性能,原則是越大越好,現在家庭用CPU容量最大的是512KB,而伺服器和工作站上用CPU的L2高速緩存更高達1MB-3MB。
cpuL1緩存首先是CPU的內部結構決定,CPU是由硅晶原片切割而成的,一塊晶原片切割的CPU塊有限,所以一個CPU的結構要非常合理地搭配L1,L2緩存大小,P4640比P4630高頻,所以內部結構有所不同。而L1緩存的作用是數據交換的「超高速」通道,所以其大小不是重點,內部參數才是關鍵,只要參數(CL值,延遲等)夠快,完全可以彌補大小的差距,像P-M 1。7G的CPU由於L1緩存的參數夠高,雖然容量有不足,但在性能測試上L1緩存的速度比P4 630快的多。所以不必刻意要求L1緩存大小。(另外,CPU的緩存速度比一般內存快的多,大概快幾十倍)
高速緩存英文是cache。一種特殊的存儲器子系統,其中復制了頻繁使用的數據,以利於CPU快速訪問。存儲器的高速緩沖存儲器存儲了頻繁訪問的 RAM 位置的內容及這些數據項的存儲地址。當處理器引用存儲器中的某地址時,高速緩沖存儲器便檢查是否存有該地址。如果存有該地址,則將數據返回處理器;如果沒有保存該地址,則進行常規的存儲器訪問。因為高速緩沖存儲器總是比主RAM存儲器速度快,所以當 RAM 的訪問速度低於微處理器的速度時,常使用高速緩沖存儲器。
Ⅲ 指令緩存的三級指令緩存
三級指令緩存是為讀取二級緩存後未命中的數據設計的—種緩存,在擁有三級緩存的CPU中,只有約5%的數據需要從內存中調用,這進一步提高了CPU的效率。 Cache(三級緩存),分為兩種,早期的是外置,以後的升級產品都是內置的。而它的實際作用即是,L3緩存的應用可以進一步降低內存延遲,同時提升大數據量計算時處理器的性能。降低內存延遲和提升大數據量計算能力對游戲都很有幫助。而在伺服器領域增加L3緩存在性能方面仍然有顯著的提升。比方具有較大L3緩存的配置利用物理內存會更有效,故它比較慢的磁碟I/O子系統可以處理更多的數據請求。具有較大L3緩存的處理器提供更有效的文件系統緩存行為及較短消息和處理器隊列長度。
其實最早的L3緩存被應用在AMD發布的K6-III處理器上,當時的L3緩存受限於製造工藝,並沒有被集成進晶元內部,而是集成在主板上。在只能夠和系統匯流排頻率同步的L3緩存同主內存其實差不了多少。後來使用L3緩存的是英特爾為伺服器市場所推出的Itanium處理器。接著就是P4EE和至強MP。Intel還打算推出一款9MB L3緩存的Itanium2處理器,和以後24MB L3緩存的雙核心Itanium2處理器。
但基本上L3緩存對處理器的性能提高顯得不是很重要,比方配備1MB L3緩存的Xeon MP處理器卻仍然不是Opteron的對手,由此可見前端匯流排的增加,要比緩存增加帶來更有效的性能提升
Ⅳ 我想知道緩存器是什麼
CPU緩存(Cache Memoney)位於CPU與內存之間的臨時存儲器,它的容量比內存小但交換速度快。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。由此可見,在CPU中加入緩存是一種高效的解決方案,這樣整個內存儲器(緩存+內存)就變成了既有緩存的高速度,又有內存的大容量的存儲系統了。緩存對CPU的性能影響很大,主要是因為CPU的數據交換順序和CPU與緩存間的帶寬引起的。
緩存的工作原理是當CPU要讀取一個數據時,首先從緩存中查找,如果找到就立即讀取並送給CPU處理;如果沒有找到,就用相對慢的速度從內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。
正是這樣的讀取機制使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在緩存中,只有大約10%需要從內存讀取。這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。總的來說,CPU讀取數據的順序是先緩存後內存。
最早先的CPU緩存是個整體的,而且容量很低,英特爾公司從Pentium時代開始把緩存進行了分類。當時集成在CPU內核中的緩存已不足以滿足CPU的需求,而製造工藝上的限制又不能大幅度提高緩存的容量。因此出現了集成在與CPU同一塊電路板上或主板上的緩存,此時就把 CPU內核集成的緩存稱為一級緩存,而外部的稱為二級緩存。一級緩存中還分數據緩存(I-Cache)和指令緩存(D-Cache)。二者分別用來存放數據和執行這些數據的指令,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了處理器效能。英特爾公司在推出Pentium 4處理器時,還新增了一種一級追蹤緩存,容量為12KB.
隨著CPU製造工藝的發展,二級緩存也能輕易的集成在CPU內核中,容量也在逐年提升。現在再用集成在CPU內部與否來定義一、二級緩存,已不確切。而且隨著二級緩存被集成入CPU內核中,以往二級緩存與CPU大差距分頻的情況也被改變,此時其以相同於主頻的速度工作,可以為CPU提供更高的傳輸速度。
二級緩存是CPU性能表現的關鍵之一,在CPU核心不變化的情況下,增加二級緩存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二級緩存上有差異,由此可見二級緩存對於CPU的重要性。
CPU在緩存中找到有用的數據被稱為命中,當緩存中沒有CPU所需的數據時(這時稱為未命中),CPU才訪問內存。從理論上講,在一顆擁有二級緩存的CPU中,讀取一級緩存的命中率為80%。也就是說CPU一級緩存中找到的有用數據占數據總量的80%,剩下的20%從二級緩存中讀取。由於不能准確預測將要執行的數據,讀取二級緩存的命中率也在80%左右(從二級緩存讀到有用的數據占總數據的16%)。那麼還有的數據就不得不從內存調用,但這已經是一個相當小的比例了。目前的較高端的CPU中,還會帶有三級緩存,它是為讀取二級緩存後未命中的數據設計的—種緩存,在擁有三級緩存的CPU中,只有約5%的數據需要從內存中調用,這進一步提高了CPU的效率。
為了保證CPU訪問時有較高的命中率,緩存中的內容應該按一定的演算法替換。一種較常用的演算法是「最近最少使用演算法」(LRU演算法),它是將最近一段時間內最少被訪問過的行淘汰出局。因此需要為每行設置一個計數器,LRU演算法是把命中行的計數器清零,其他各行計數器加1。當需要替換時淘汰行計數器計數值最大的數據行出局。這是一種高效、科學的演算法,其計數器清零過程可以把一些頻繁調用後再不需要的數據淘汰出緩存,提高緩存的利用率。
CPU產品中,一級緩存的容量基本在4KB到18KB之間,二級緩存的容量則分為128KB、256KB、512KB、1MB等。一級緩存容量各產品之間相差不大,而二級緩存容量則是提高CPU性能的關鍵。二級緩存容量的提升是由CPU製造工藝所決定的,容量增大必然導致CPU內部晶體管數的增加,要在有限的CPU面積上集成更大的緩存,對製造工藝的要求也就越高。
Ⅳ 一級數據緩存跟一級指令緩存是什麼意思
一級緩存(Level 1 Cache)簡稱L1 Cache,位於CPU內核的旁邊,是與CPU結合最為緊密的CPU緩存,也是歷史上最早出現的CPU緩存。由於一級緩存的技術難度和製造成本最高,提高容量所帶來的技術難度增加和成本增加非常大,所帶來的性能提升卻不明顯,性價比很低,而且現有的一級緩存的命中率已經很高,所以一級緩存是所有緩存中容量最小的,比二級緩存要小得多。 一般來說,一級緩存可以分為一級數據緩存(Data Cache,D-Cache)和一級指令緩存(Instruction Cache,I-Cache)。二者分別用來存放數據以及對執行這些數據的指令進行即時解碼,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了處理器效能。目前大多數CPU的一級數據緩存和一級指令緩存具有相同的容量,例如AMD的Athlon XP就具有64KB的一級數據緩存和64KB的一級指令緩存,其一級緩存就以64KB+64KB來表示,其餘的CPU的一級緩存表示方法以此類推。 二級緩存是CPU性能表現的關鍵之一,在CPU核心不變化的情況下,增加二級緩存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二級緩存上有差異,由此可見二級緩存對於CPU的重要性。
Ⅵ l2cache和CPU內的指令隊列緩沖器有什麼關系
一般來說l2cache是指令和數據共享的cache,當cpu執行指令發現需要執行的指令沒有在指令隊列緩沖器裡面,cpu就會先去l1cache看看沒有那個需要執行的指令,沒有的話再到l2cache裡面去。找到了指令以後就把指令讀到指令隊列緩沖器裡面。
Ⅶ cpu的指令緩存與數據緩存有什麼不一樣分別干哪些活
緩存是為了解決CPU速度和內存速度的速度差異問題。內存中被CPU訪問最頻繁的數據和指令被復制入CPU中的緩存,這樣CPU就可以不經常到象「蝸牛」一樣慢的內存中去取數據了,CPU只要到緩存中去取就行了,而緩存的速度要比內存快很多。 這里要特別指出的是: 1.因為緩存只是內存中少部分數據的復製品,所以CPU到緩存中尋找數據時,也會出現找不到的情況(因為這些數據沒有從內存復制到緩存中去),這時CPU還是會到內存中去找數據,這樣系統的速度就慢下來了,不過CPU會把這些數據復制到緩存中去,以便下一次不要再到內存中去取。 2.因為隨著時間的變化,被訪問得最頻繁的數據不是一成不變的,也就是說,剛才還不頻繁的數據,此時已經需要被頻繁的訪問,剛才還是最頻繁的數據,現在又不頻繁了,所以說緩存中的數據要經常按照一定的演算法來更換,這樣才能保證緩存中的數據是被訪問最頻繁的。 緩存的工作原理是當CPU要讀取一個數據時,首先從緩存中查找,如果找到就立即讀取並送給CPU處理;如果沒有找到,就用相對慢的速度從內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。 正是這樣的讀取機制使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在緩存中,只有大約10%需要從內存讀取。這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。總的來說,CPU讀取數據的順序是先緩存後內存。 一級緩存和二級緩存 為了分清這兩個概念,我們先了解一下RAM 。RAM和ROM相對的,RAM是掉電以後,其中的信息就消失那一種,ROM在掉電以後信息也不會消失那一種。 RAM又分兩種,一種是靜態RAM,SRAM;一種是動態RAM,DRAM。前者的存儲速度要比後者快得多,我們現在使用的內存一般都是動態RAM。 有的菜鳥就說了,為了增加系統的速度,把緩存擴大不就行了嗎,擴大的越大,緩存的數據越多,系統不就越快了嗎?緩存通常都是靜態RAM,速度是非常的快, 但是靜態RAM集成度低(存儲相同的數據,靜態RAM的體積是動態RAM的6倍), 價格高(同容量的靜態RAM是動態RAM的四倍), 由此可見,擴大靜態RAM作為緩存是一個非常愚蠢的行為, 但是為了提高系統的性能和速度,我們必須要擴大緩存, 這樣就有了一個折中的方法,不擴大原來的靜態RAM緩存,而是增加一些高速動態RAM做為緩存, 這些高速動態RAM速度要比常規動態RAM快,但比原來的靜態RAM緩存慢, 我們把原來的靜態ram緩存叫一級緩存,而把後來增加的動態RAM叫二級緩存。 一級緩存和二級緩存中的內容都是內存中訪問頻率高的數據的復製品(映射),它們的存在都是為了減少高速CPU對慢速內存的訪問。 通常CPU找數據或指令的順序是:先到一級緩存中找,找不到再到二級緩存中找,如果還找不到就只有到內存中找了。
Ⅷ 指令隊列緩沖器的介紹
當EU執行跳轉、子程序調用或返回指令時,BIU就使指令隊列復位,並從指令給出的新地址開始取指令,新取的第1條指令直接經指令隊列送EU執行,隨後取來的指令將填入指令隊列緩沖器。
Ⅸ 指令緩存的技術簡介
CPU緩存(Cache Memory)位於CPU與內存之間的臨時存儲器,它的容量比內存小但交換速度快。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即 將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。由此可見,在CPU中加入緩存是一種高效的解決方案,這樣整個內存儲器(緩存+內存)就變成了既有緩存的高速度,又有內存的大容量的存儲系統了。緩存對CPU的性能影響很大,主要是因為CPU的數據交換順序和CPU與緩 存間的帶寬引起的。
緩存的工作原理是當CPU要讀取一個數據時,首先從緩存中查找,如果找到就立即讀取並送給CPU處理;如果沒有找到,就用相對慢的速度從內存中 讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。
正是這樣的讀取機制使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在緩存中,只有 大約10%需要從內存讀取。這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。總的來說,CPU讀取數據的順序是先緩存後內存。
最早先的CPU緩存是個整體的,而且容量很低,英特爾公司從Pentium時代開始把緩存進行了分類。當時集成在CPU內核中的緩存已不足以滿 足CPU的需求,而製造工藝上的限制又不能大幅度提高緩存的容量。因此出現了集成在與CPU同一塊電路板上或主板上的緩存,此時就把 CPU內核集成的緩 存稱為一級緩存,而外部的稱為二級緩存。一級緩存中還分指令緩存(I-Cache)和數據緩存(D-Cache)。二者分別用來存放數據和執行這些數據的 指令,提高了處理器效能。英特爾公司在推出Pentium 4處理器時,還新增了一種一級追蹤緩存,容量為12KB.
隨著CPU製造工藝的發展,二級緩存也能輕易的集成在CPU內核中,容量也在逐年提升。再用集成在CPU內部與否來定義一、二級緩存,已不 確切。而且隨著二級緩存被集成入CPU內核中,以往二級緩存與CPU大差距分頻的情況也被改變,此時其以相同於主頻的速度工作,可以為CPU提供更高的傳 輸速度。
二級緩存是CPU性能表現的關鍵之一,在CPU核心不變化的情況下,增加二級緩存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二級緩存上有差異,由此可見二級緩存對於CPU的重要性。
CPU在緩存中找到有用的數據被稱為命中,當緩存中沒有CPU所需的數據時(這時稱為未命中),CPU才訪問內存。從理論上講,在一顆擁有二級緩存的CPU中,讀取一級緩存的命中率為80%。也就是說CPU一級緩存中找到的有用數據占數據總量的80%,剩下的20%從二級緩存中讀取。由於不能准 確預測將要執行的數據,讀取二級緩存的命中率也在80%左右(從二級緩存讀到有用的數據占總數據的16%)。那麼還有的數據就不得不從內存調用,但這已經 是一個相當小的比例了。
較高端的CPU中,還會帶有三級緩存,它是為讀取二級緩存後未命中的數據設計的—種緩存,在擁有三級緩存的CPU中,只有約 5%的數據需要從內存中調用,這進一步提高了CPU的效率。
Ⅹ 指令緩存的指令緩存和指令追蹤緩存
緩存存儲的內容不止是數據,也包括指令,但是由於指令具備的以下性質,導致指令緩存的機制遠沒有數據緩存那麼復雜:
需要執行的代碼量通常都是比較固定的,和問題的復雜度有關 程序指令通常由編譯器產生,產生過程中就能得到一定的優化 相比數據存取機制,程序流程的可預測度要強得多,更有利於prefeching 代碼一般都具有很好的空間和時間局部性
隨著技術的發展,CPU的執行過程都流水化了,指令的執行都是分成階段的,一開始安心等在指令緩存中,等待被處理單元執行時才取出,然後解碼,准備相關參數,最後執行。這種過程有兩個缺點,首先某些 x86 指令非常復雜,經由解碼器時需耗費太多的時間來解碼,尤其是以X86為代表的CISA家族,最糟的情況下所有解碼單元忙於解碼復雜指令,以至於阻礙處理器的執行管道。另一個問題則是如果在小循環的代碼中,每當這些代碼進入執行路徑幾次,編碼就得進行幾次,造成時間的浪費。而且大家知道的流水管線是越做越長,這也就意味著,一旦流水線遭遇不測發生中斷,或者出現分枝預測的錯誤,造成的延時就會很大。可以說,這算是一個一直困擾CPU設計人員的問題。
從Pentium 4開始,Intel採用了一種新的緩存類型,叫tracecache,俗稱指令追蹤緩存。這玩意不是用來和一般的指令緩存一樣存儲指令的原始位元組序列,而是被用來存儲解碼單元送出來的微操作。
指令追蹤緩存位於指令解碼器和內核第一層計算管線之間,指令在解碼單元內獲取和解碼之後,微操作必須先經過追蹤緩存的存儲和和輸出,才能到達內核第一層計算管線被執行。這樣可以有效彌補上述兩個缺點,因為此時所取的都是解碼後的指令,還避免了指令的重復調用。更重要的是,追蹤緩存確保處理器管道持續處於指令滿載的狀態,避免執行路徑由於解碼單元延遲的情況。應該說,指令追蹤緩存確實是一個值得稱道的技術。
當然,這些分析都是基於L1I緩存分析的,至於L2的緩存,因為是數據和指令統一存儲,自然就不可能作出和追蹤緩存類似的架構了。