1. 程式人生 > >cpu二級快取和一級快取詳解及區別(圖解)

cpu二級快取和一級快取詳解及區別(圖解)

  錯誤觀點二:處理器快取是一個整體

www.pcxx8.com—電腦學習吧
【圖】生產技術對快取容量大小的影響

www.pcxx8.com—電腦學習吧
【圖】PCB上帶快取的PentiumIII處理器

  事實上最早先的CPU快取確實是個整體,而且容量也很低。英特爾公司從Pentium時代開始後就把快取進行了分類,當時整合在CPU核心中的快取已不足以滿足CPU的需求,而製造工藝上的限制又不能大幅度提高快取的容量。因此出現了整合在與CPU同一塊電路板上或主機板上的快取,此時就把CPU核心整合的快取稱為一級快取,而外部的稱為二級快取;後來隨著生產技術的不斷提高,最終二級快取也被挪進了處理器當中。通常一級快取中還分資料快取(Data Cache,D-Cache)和指令快取(Instruction Cache,I-Cache)。二者分別用來存放資料和執行這些資料的指令,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的衝突,提高了處理器效能。英特爾公司在推出Pentium 4處理器時,還新增了一種一級追蹤快取,容量為12KB。

  錯誤觀點三:L1級快取和L2級快取只有容量上的差別

  用於儲存資料的快取部分通常被稱為RAM,掉電以後其中的資訊就會消失。RAM又分兩種,其中一種是靜態RAM(SRAM);另外一種是動態 RAM(DRAM)。前者的儲存速度要比後者快得多,我們現在使用的記憶體一般都是動態RAM。處理器的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的效率,從某種意義上說,預取效率的提高,大大降低了生產成本卻提供了非常接近理想狀態的效能。除非某天生產技術變得非常強,否則記憶體仍會存在,快取的效能遞增特性也仍會保留。

  錯誤觀點四:快取只是隨意調取資料並無選擇

  即便處理器內部整合的快取資料交換能力非常強,也仍需要對調取資料做一定的篩選。這是因為隨著時間的變化,被訪問得最頻繁的資料不是一成不變的,也就是說,剛才還不頻繁的資料,此時已經需要被頻繁的訪問,剛才還是最頻繁的資料,現在又不頻繁了,所以說快取中的資料要經常按照一定的演算法來更換,這樣才能保證快取中的資料經常是被訪問最頻繁的。命中率演算法中較常用的“最近最少使用演算法”(LRU演算法),它是將最近一段時間內最少被訪問過的行淘汰出局。因此需要為每行設定一個計數器,LRU演算法是把命中行的計數器清零,其他各行計數器加1。當需要替換時淘汰行計數器計數值最大的資料行出局。這是一種高效、科學的演算法,其計數器清零過程可以把一些頻繁呼叫後再不需要的資料淘汰出快取,提高快取的利用率。


www.pcxx8.com—電腦學習吧
【圖】擁有144MB快取的八路IBM POWER5處理器

  總結:

快取記憶體做為處理器不可分割的一部分,已經融入到效能提升的考慮因素當中,伴隨生產技術的進一步發展,快取的級數還將增加,容量也會進一步提高。作為處理器效能助推器的快取記憶體,仍會在成本和功耗控制發揮巨大的優勢,而效能方面也會有長足的發展。可以毫不誇張的說:快取技術帶領處理器走進了多彩的天堂。