娛樂滿紛 26FUN's Archiver

mw4mango 發表於 2014-2-8 10:18 AM

[教學]CPU二級緩存與CPU性能

[font=新細明體][size=4]隨著45NM制程CPU的普及,CPU的二級緩存也增至4MB、6MB甚至是8MB。在CPU的頻率相同的情況下,二級緩存對于CPU性能的影響還是是相當大的。那麼二級緩存對與CPU的性能有多大影響呢?  CPU的緩存是CPU和內存通信的中轉站,而二級緩存作為一級緩存的“后備倉庫”,用于為一級緩存存儲更多的數據,減少CPU直接訪問內存的次數。CPU訪問並調用緩存的數據所占的比重越大,則CPU訪問並調用內存的數據所占的比重就越小,那麼因訪問內存而耽誤的時間就越少。所以理論上而言CPU二級緩存越大,CPU的實際效率也就越高,性能就越强。
  實際上,現在Intel和AMD處理器在一級緩存的邏輯結構設計上有所不同,所以二級緩存對CPU性能的影響也不盡相同。因為CPU讀取的數據(包括指令)中有80%的數據來自一級緩存,所以一級緩存的邏輯結構決定了CPU二級緩存容量對CPU性能的影響。Intel的Pentium4及Celeron系列處理器的一級數據緩存被稱為“數據代碼指令追蹤(讀寫)緩存”;AMD的Athlon64/AthlonXP/Sempron/Duron系列處理器的一級數據緩存叫作“實數據讀寫緩存”。
  那麼INTEL和AMD的CPU在緩存架構上有什麼區別呢?我們來舉例說明:
  假設有一個運算任務,要從“1”一直遞加到“999999”。在傳統的“實數據讀寫緩存”架構下,這一系列數據中最先用到的數據(如“1、2……449、450”)將存儲在CPU一級數據緩存中,更多的數據(如“451、452……899999、900000”)存儲在CPU二級緩存中,其余的數據(如“900001、999002……999998、999999”)暫存在內存中,CPU將按照一級數據緩存、二級緩存和內存的順序讀取這些數據。
  傳統的一級數據緩存的存儲方式
  但是在“數據代碼指令追蹤緩存”架構的CPU中,一級數據緩存並不存儲這些最先用到的數據(“1、2……449、450”),而是將這些數據存儲到二級緩存中,一級數據緩存僅僅存儲這些數據在二級緩存中的起止地址(又稱為:指令代碼)。例如,數據“1、2……449、450”順序存儲在二級緩存中,數據“1”所在地址為“00001F”,數據“450”所在地址為“00451F”,實際上一級數據緩存只需要存儲“00001F”和“00451F”這兩個地址就可以了,而不需要存儲大量的數據。
  “數據代碼指令追蹤緩存”架構的一級數據緩存的存儲方式
  但是由于其一級數據緩存不存儲數據,數據存儲在二級緩存中,因此對二級緩存容量的依賴非常大,所以CPU需要更大的二級緩存容量才能發揮出應有的性能。在實際應用中,CPU處理的數據中大多數都是0KB~128KB大小的數據,128KB~256KB的數據約有10%,256KB~512KB的數據有5%,512KB~1MB的數據僅有3%左右。所以對于這種CPU來說,二級緩存容量從0KB增加到256KB對CPU性能的提高几乎是直線性的;增加到512KB對CPU性能的提高稍微小一些;從512KB增加到1MB,普通用戶就很難体會到CPU性能有提高了。正因為如此,大家能感受到Pentium4C(512KB二級緩存)與Celeron(128KB二級緩存)的性能差異,卻很難感受到Pentium4C(512KB二級緩存)與Pentium4E(1MB二級緩存)的性能差異了[/size][/font]

頁: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.