淺析CPU二級(jí)緩存容量對(duì)CPU性能的影響
代桌面級(jí)PC的CPU二級(jí)緩存容量大多數(shù)在64KB到2MB之間。因?yàn)镃PU二級(jí)緩存容量對(duì)CPU性能有不小的影響,所以低端CPU和中高端CPU在物理結(jié)構(gòu)上的差異主要就是二級(jí)緩存容量的大小。那么二級(jí)緩存容量為什么如此重要?它對(duì)CPU性能有什么樣的影響呢?
CPU二級(jí)緩存作為一級(jí)緩存的“后備倉(cāng)庫(kù)”,用于為一級(jí)緩存存儲(chǔ)更多的數(shù)據(jù),減少CPU直接訪問(wèn)內(nèi)存 的次數(shù)。理論上,CPU訪問(wèn)并調(diào)用緩存的數(shù)據(jù)所占的比重越大,則CPU訪問(wèn)并調(diào)用內(nèi)存的數(shù)據(jù)所占的比重就越小,那么因訪問(wèn)內(nèi)存而耽誤的時(shí)間 就越少。所以緩存的容量越大,CPU的實(shí)際效率也就越高,性能就越強(qiáng)。
實(shí)際上,在52硬件上講到,現(xiàn)在Intel和AMD處理器在一級(jí)緩存的邏輯結(jié)構(gòu)設(shè)計(jì)上有所不同,所以二級(jí)緩存對(duì)CPU性能的影響也不盡相同。因?yàn)镃PU讀取的 數(shù)據(jù)(包括指令)中有80%的數(shù)據(jù)來(lái)自一級(jí)緩存,所以一級(jí)緩存的邏輯結(jié)構(gòu)決定了CPU二級(jí)緩存容量對(duì)CPU性能的影響。Intel的Pentium 4及Celeron系列處理器的一級(jí)數(shù)據(jù)緩存被稱為“數(shù)據(jù)代碼指令追蹤(讀寫(xiě))緩存”;AMD的Athlon 64/Athlon XP/Sempron/Duron系列處理器 的一級(jí)數(shù)據(jù)緩存叫作“實(shí)數(shù)據(jù)讀寫(xiě)緩存”。
這兩類CPU一級(jí)緩存不同的邏輯結(jié)構(gòu)有什么不同?下面,我用一個(gè)例子來(lái)描述。
假設(shè)有一個(gè)運(yùn)算任務(wù),要從“1”一直遞加到“999999”。在傳統(tǒng)的“實(shí)數(shù)據(jù)讀寫(xiě)緩存”架構(gòu)下,這一系列數(shù)據(jù)中最先用到的數(shù)據(jù)(如 “1、2……449、450”)將存儲(chǔ)在CPU一級(jí)數(shù)據(jù)緩存中,更多的數(shù)據(jù)(如“451、452……899999、900000”)存儲(chǔ)在CPU二級(jí)緩存中,其余的數(shù) 據(jù)(如“900001、999002……999998、999999”)暫存在內(nèi)存中,CPU將按照一級(jí)數(shù)據(jù)緩存、二級(jí)緩存和內(nèi)存的順序讀取這些數(shù)據(jù)。
傳統(tǒng)的一級(jí)數(shù)據(jù)緩存的存儲(chǔ)方式
但是在“數(shù)據(jù)代碼指令追蹤緩存”架構(gòu)的CPU中,一級(jí)數(shù)據(jù)緩存并不存儲(chǔ)這些最先用到的數(shù)據(jù)(“1、2……449、450”),而是將這些 數(shù)據(jù)存儲(chǔ)到二級(jí)緩存中,一級(jí)數(shù)據(jù)緩存僅僅存儲(chǔ)這些數(shù)據(jù)在二級(jí)緩存中的起止地址(又稱為:指令代碼)。例如,數(shù)據(jù)“1、2……449、450” 順序存儲(chǔ)在二級(jí)緩存中,數(shù)據(jù)“1”所在地址為“00001F”,數(shù)據(jù)“450” 所在地址為“00451F”,實(shí)際上一級(jí)數(shù)據(jù)緩存只需要存儲(chǔ)“00001F”和“00451F”這兩個(gè)地址就可以了,而不需要存儲(chǔ)大量的數(shù)據(jù)。
“數(shù)據(jù)代碼指令追蹤緩存”架構(gòu)的一級(jí)數(shù)據(jù)緩存的存儲(chǔ)方式
但是由于其一級(jí)數(shù)據(jù)緩存不存儲(chǔ)數(shù)據(jù),數(shù)據(jù)存儲(chǔ)在二級(jí)緩存中,因此對(duì)二級(jí)緩存容量的依賴非常大,所以CPU需要更大的二級(jí)緩存容量 才能發(fā)揮出應(yīng)有的性能。在實(shí)際應(yīng)用中,CPU處理的數(shù)據(jù)中大多數(shù)都是0KB~128KB大小的數(shù)據(jù),128KB~256KB的數(shù)據(jù)約有10%,256KB~512KB的 數(shù)據(jù)有5%,512KB~1MB的數(shù)據(jù)僅有3%左右。所以對(duì)于這種CPU來(lái)說(shuō),二級(jí)緩存容量從0KB增加到256KB對(duì)CPU性能的提高幾乎是直線性的;增加 到512KB對(duì)CPU性能的提高稍微小一些;從512KB增加到1MB,普通用戶就很難體會(huì)到CPU性能有提高了。正因?yàn)槿绱?,大家能感受到Pentium 4 C(512KB二級(jí)緩存)與Celeron(128KB二級(jí)緩存)的性能差異,卻很難感受到Pentium 4 C(512KB二級(jí)緩存)與Pentium 4 E(1MB二級(jí)緩存)的性能差異了。
