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