CPU快取

CPU快取

CPU快取(Cache Memory)是位於CPU與記憶體之間的臨時存儲器,它的容量比記憶體小的多但是交換速度卻比記憶體要快得多。高速快取的出現主要是為了解決CPU運算速度與記憶體讀寫速度不匹配的矛盾,因為CPU運算速度要比記憶體讀寫速度快很多,這樣會使CPU花費很長時間等待數據到來或把數據寫入記憶體。在快取中的數據是記憶體中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開記憶體直接從快取中調用,從而加快讀取速度。

作用

CPU快取CPU快取

高速緩衝存儲器Cache是位於CPU與記憶體之間的臨時存儲器,它的容量比記憶體小但交換速度快。

在Cache中的數據是記憶體中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開記憶體直接從Cache中調用,從而加快讀

CPU快取CPU快取
取速度。由此可見,在CPU中加入Cache是一種高效的解決方案,這樣整個記憶體儲器(Cache+記憶體)就變成了既有Cache的高速度,又有記憶體的大容量的存儲系統了。

Cache對CPU的性能影響很大,主要是因為CPU的數據交換順序和CPU與Cache間的頻寬引起的。

相關信息

雙核處理器二級快取

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。

一級、二級快取的比較

L1 cache vs L2 Cache用於存儲數據的快取部分通常被稱為RAM,掉電以後其中的信息就會消失。RAM又分兩種,其中一種是靜態RAM(SRAM);另外一種是動態RAM(DRAM)。前者的存儲速度要比後者快得多,我們現在使用的記憶體一般都是動態RAM。CPU的L1級快取通常都是靜態RAM,速度非常的快,但是靜態RAM集成度低(存儲相同的數據,靜態RAM的體積是動態RAM的6倍),而且價格也相對較為昂貴(同容量的靜態RAM是動態RAM的四倍)。擴大靜態RAM作為快取是一個不太合算的做法,但是為了提高系統的性能和速度又必須要擴大快取,這就有了一個折中的方法:在不擴大原來的靜態RAM快取容量的情況下,僅僅增加一些高速動態RAM做為L2級快取。

高速動態RAM速度要比常規動態RAM快,但比原來的靜態RAM快取慢,而且成本也較為適中。一級快取和二級快取中的內容都是記憶體中訪問頻率高的數據的複製品(映射),它們的存在都是為了減少高速CPU對慢速記憶體的訪問。二級快取是CPU性能表現的關鍵之一,在CPU核心不變化的情況下,增加二級快取容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二級快取上存在差異,由此可見二級快取對CPU的重要性。CPU在快取中找到有用的數據被稱為命中,當快取中沒有CPU所需的數據時(這時稱為未命中),CPU才訪問記憶體。從理論上講,在一顆擁有二級快取的CPU中,讀取一級快取的命中率為80%。也就是說CPU一級快取中找到的有用數據占數據總量的80%,剩下的20%從二級快取中讀取。由於不能準確預測將要執行的數據,讀取二級快取的命中率也在80%左右(從二級快取讀到有用的數據占總數據的16%)。那么還有的數據就不得不從記憶體調用,但這已經是一個相當小的比例了。

目前的較高端CPU中,還會帶有三級快取,它是為讀取二級快取後未命中的數據設計的—種快取,在擁有三級快取的CPU中,只有約5%的數據需要從記憶體中調用,這進一步提高了CPU的效率,從某種意義上說,預取效率的提高,大大降低了生產成本卻提供了非常接近理想狀態的性能。除非某天生產技術變得非常強,否則記憶體仍會存在,快取的性能遞增特性也仍會保留。CPU快取與記憶體的關係既然CPU快取能夠在很大程度上提高CPU的性能,那么,有些朋友可能會問,是不是將來有可能,目前的系統記憶體將會被CPU取代呢?

答案應該是否定的,首先,儘管CPU快取的傳輸速率確實很高,但要完全取代記憶體的地位仍不可行,這主要是因為快取只是記憶體中少部分數據的複製品,所以CPU到快取中尋找數據時,也會出現找不到的情況(因為這些數據沒有從記憶體複製到快取中去),這時CPU還是會到記憶體中去找數據,與此同時系統的速度就慢了下來,不過CPU會把這些數據複製到快取中去,以便下一次不用再到記憶體中去取。也即是說,隨著快取增大到一定程度,其對CPU性能的影響將越來越小,在性能比上來說,越來越不合算。就目前快取容量、成本以及功耗表現來看,還遠遠無法與記憶體抗衡,另外從某種意義上來說,記憶體也是CPU快取的一種表現形式,只不過在速率上慢很多,然而卻在容量、功耗以及成本方面擁有巨大優勢。如果記憶體在將來可以做到足夠強的話,反而很有取代CPU快取的可能。

快取的讀寫算法同樣重要即便CPU內部集成的快取數據交換能力非常強,也仍需要對調取數據做一定的篩選。這是因為隨著時間的變化,被訪問得最頻繁的數據不是一成不變的,也就是說,剛才還不頻繁的數據,此時已經需要被頻繁的訪問,剛才還是最頻繁的數據,現在又不頻繁了,所以說快取中的數據要經常按照一定的算法來更換,這樣才能保證快取中的數據經常是被訪問最頻繁的。命中率算法中較常用的“最近最少使用算法”(LRU算法),它是將最近一段時間內最少被訪問過的行淘汰出局。因此需要為每行設定一個計數器,LRU算法是把命中行的計數器清零,其他各行計數器加1。

當需要替換時淘汰行計數器計數值最大的數據行出局。這是一種高效、科學的算法,其計數器清零過程可以把一些頻繁調用後再不需要的數據淘汰出快取,提高快取的利用率。高速快取做為CPU不可分割的一部分,已經融入到性能提升的考慮因素當中,伴隨生產技術的進一步發展,快取的級數還將增加,容量也會進一步提高。作為CPU性能助推器的高速快取,仍會在成本和功耗控制方面發揮巨大的優勢,而性能方面也會取得長足的發展。

三級快取

三級快取是為讀取二級快取後未命中的數據設計的—種快取,在擁有三級快取的CPU中,只有約5%的數據需要從記憶體中調用,這進一步提高了CPU的效率。

其實最早的L3快取被套用在AMD發布的K6-III處理器上,當時的L3快取受限於製造工藝,並沒有被集成進晶片內部,而是集成在主機板上。在只能夠和系統匯流排頻率同步的L3快取同主記憶體其實差不了多少。後來使用L3快取的是英特爾為伺服器市場所推出的Itanium(Itanium 安騰 )處理器。接著就是P4EE(Extreme Edition)和至強MP。Intel還打算推出一款9MB L3快取的Itanium2處理器,和以後24MB L3快取的雙核心Itanium2處理器。

但基本上L3快取對處理器的性能提高顯得不是很重要,比方配備1MB L3快取的Xeon MP處理器卻仍然不是Opteron的對手,由此可見前端匯流排的增加,要比快取增加帶來更有效的性能提升。

相關搜尋

熱門詞條

聯絡我們