cpu和緩存有什麼區別
Ⅰ 緩存是什麼意思...
緩存是指可以進行高速數據交換的存儲器,它先於內存與CPU交換數據,因此速率很快。
緩存的工作原理是當CPU要讀取一個數據時,首先從CPU緩存中查找,找到就立即讀取並送給CPU處理;沒有找到,就從速率相對較慢的內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。
正是這樣的讀取機制使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在CPU緩存中,只有大約10%需要從內存讀取。這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。
主要意義
緩存工作的原則,就是「引用的局部性」,這可以分為時間局部性和空間局部性。空間局部性是指CPU在某一時刻需要某個數據,那麼很可能下一步就需要其附近的數據;時間局部性是指當某個數據被訪問過一次之後,過不了多久時間就會被再一次訪問。對於應用程序而言,不管是指令流還是數據流都會出現引用的局部性現象。
以上內容參考:網路-緩存
Ⅱ CPU和內存都有緩存!這兩個緩存有什麼區別都是作什麼的
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內核集成的緩存稱為一級緩存,而外部的稱為二級緩存。一級緩存中還分數據緩存(Data Cache,D-Cache)和指令緩存(Instruction Cache,I-Cache)。二者分別用來存放數據和執行這些數據的指令,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了處理器效能。英特爾公司在推出Pentium 4處理器時,用新增的一種一級追蹤緩存替代指令緩存,容量為12KμOps,表示能存儲12K條微指令。
隨著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到64KB之間,二級緩存的容量則分為128KB、256KB、512KB、1MB、2MB等。一級緩存容量各產品之間相差不大,而二級緩存容量則是提高CPU性能的關鍵。二級緩存容量的提升是由CPU製造工藝所決定的,容量增大必然導致CPU內部晶體管數的增加,要在有限的CPU面積上集成更大的緩存,對製造工藝的要求也就越高。
雙核心CPU的二級緩存比較特殊,和以前的單核心CPU相比,最重要的就是兩個內核的緩存所保存的數據要保持一致,否則就會出現錯誤,為了解決這個問題不同的CPU使用了不同的辦法:
Intel雙核心處理器的二級緩存
目前Intel的雙核心CPU主要有Pentium D、Pentium EE、Core Duo三種,其中Pentium D、Pentium EE的二級緩存方式完全相同。Pentium D和Pentium EE的二級緩存都是CPU內部兩個內核具有互相獨立的二級緩存,其中,8xx系列的Smithfield核心CPU為每核心1MB,而9xx系列的Presler核心CPU為每核心2MB。這種CPU內部的兩個內核之間的緩存數據同步是依靠位於主板北橋晶元上的仲裁單元通過前端匯流排在兩個核心之間傳輸來實現的,所以其數據延遲問題比較嚴重,性能並不盡如人意。
Core Duo使用的核心為Yonah,它的二級緩存則是兩個核心共享2MB的二級緩存,共享式的二級緩存配合Intel的「Smart cache」共享緩存技術,實現了真正意義上的緩存數據同步,大幅度降低了數據延遲,減少了對前端匯流排的佔用,性能表現不錯,是目前雙核心處理器上最先進的二級緩存架構。今後Intel的雙核心處理器的二級緩存都會採用這種兩個內核共享二級緩存的「Smart cache」共享緩存技術。
AMD雙核心處理器的二級緩存
Athlon 64 X2 CPU的核心主要有Manchester和Toledo兩種,他們的二級緩存都是CPU內部兩個內核具有互相獨立的二級緩存,其中,Manchester核心為每核心512KB,而Toledo核心為每核心1MB。處理器內部的兩個內核之間的緩存數據同步是依靠CPU內置的System Request Interface(系統請求介面,SRI)控制,傳輸在CPU內部即可實現。這樣一來,不但CPU資源佔用很小,而且不必佔用內存匯流排資源,數據延遲也比Intel的Smithfield核心和Presler核心大為減少,協作效率明顯勝過這兩種核心。不過,由於這種方式仍然是兩個內核的緩存相互獨立,從架構上來看也明顯不如以Yonah核心為代表的Intel的共享緩存技術Smart Cache。
內存都有緩存嗎??????
Ⅲ CPU寄存器和緩存有什麼區別
寄存器是匯編用上的吧!和緩沖不是一回事!
以下是C-V的
寄存器是CPU內部重要的數據存儲資源,是匯編程序員能直接使用的硬體資源之一。
由於寄存器的存取速度比內存快,所以,在用匯編語言編寫程序時,要盡可能充分利用寄存器的存儲功能。
寄存器一般用來保存程序的中間結果,為隨後的指令快速提供操作數,從而避免把中間結果存入內存,再讀取內存的操作。在高級語言(如:C/C++語言)中,也有定義變數為寄存器類型的,這就是提高寄存器利用率的一種可行的方法。
另外,由於寄存器的個數和容量都有限,不可能把所有中間結果都存儲在寄存器中,所以,要對寄存器進行適當的調度。根據指令的要求,如何安排適當的寄存器,避免操作數過多的傳送操作是一項細致而又周密的工作。
有關「寄存器的分配策略」在《編譯原理》中會有詳細的介紹。
1、 16位寄存器組
16位CPU所含有的寄存器有(見圖2.1中16位寄存器部分):
4個數據寄存器(AX、BX、CX和DX)
2個變址和指針寄存器(SI和DI) 2個指針寄存器(SP和BP)
4個段寄存器(ES、CS、SS和DS)
1個指令指針寄存器(IP) 1個標志寄存器(Flags)
2、 32位寄存器組
32位CPU除了包含了先前CPU的所有寄存器,並把通用寄存器、指令指針和標志寄存器從16位擴充成32位之外,還增加了2個16位的段寄存器:FS和GS。
32位CPU所含有的寄存器有(見圖2.1中的寄存器):
4個數據寄存器(EAX、EBX、ECX和EDX)
2個變址和指針寄存器(ESI和EDI) 2個指針寄存器(ESP和EBP)
6個段寄存器(ES、CS、SS、DS、FS和GS)
1個指令指針寄存器(EIP) 1個標志寄存器(EFlags)