1.1 為什么需要Cache?
因?yàn)殡S著共計(jì)和設(shè)計(jì)的演進(jìn),CPU的計(jì)算性能其實(shí)發(fā)生了翻天覆地的變化,但DRAM的存儲(chǔ)性能沒有發(fā)展那么快。
由于大量循環(huán)的存在,我們?cè)L問是數(shù)據(jù)其實(shí)在內(nèi)存中的位置是相近的。換句專業(yè)點(diǎn)的話說,我們?cè)L問數(shù)據(jù)有局部性。我們只需要將這些數(shù)據(jù)放入一個(gè)小而快的存儲(chǔ)中,這樣就可以快速訪問相關(guān)數(shù)據(jù)了。
總結(jié)起來(lái)Cache是為了給CPU提供高速存儲(chǔ)訪問,利用數(shù)據(jù)局部性而設(shè)計(jì)的小存儲(chǔ)單元。
1.2 實(shí)際系統(tǒng)中的Cache
整個(gè)系統(tǒng)的存儲(chǔ)架構(gòu)包括了CPU寄存器,L1/L2/L3 Cache,DRAM和硬盤。
數(shù)據(jù)訪問時(shí)先找寄存器,寄存器里沒有找L1Cache,L1Cache沒有找L2Cache依次類推,最后找到硬盤中。
同時(shí)我們可以看到,速度與存儲(chǔ)容量的折中關(guān)系。容量越小,訪問速度越快!
其中,一個(gè)概念需要搞清楚。CPU和Cache是Word傳輸?shù)?,而Cache到主存儲(chǔ)是以塊傳輸?shù)?,一塊大約64Byte。
1.3 Cache的分類
按照數(shù)據(jù)類型劃分:
I-Cache、D-Cache。I-Cache負(fù)責(zé)放置指令,D-Cache負(fù)責(zé)放置數(shù)據(jù)
兩者最大的不同是D-Cache的數(shù)據(jù)可以寫回,I-Cache的數(shù)據(jù)是只讀的。
按照大小劃分:
分為small Cache/large Cache . 沒路組(后文組相連介紹)<4KB叫small Cache,多用于L1 Cache;>4KB叫l(wèi)arge Cache,多用于L2及其他Cache。按照位置劃分:Inner Cache 和Outer Cache。一般獨(dú)屬于CPU微架構(gòu)的叫Inner Cache,例如L1 L2Cache;不屬于CPU微架構(gòu)的的叫Outer Cache。
按照數(shù)據(jù)關(guān)系劃分:Inclusive/exclusive Cache,下級(jí)Cache包含上級(jí)的數(shù)據(jù)叫Inclusive Cache.不包含叫exclusive Cache。