CPU緩存(Cache Memory)是位于CPU與內(nèi)存之間的臨時存儲器,它的容量比內(nèi)存小的多但是交換速度卻比內(nèi)存要快得多。緩存的出現(xiàn)主要是為了解決CPU運算速度與內(nèi)存讀寫速度不匹配的矛盾,因為CPU運算速度要比內(nèi)存讀寫速度快很多,這樣會使CPU花費很長時間等待數(shù)據(jù)到來或把數(shù)據(jù)寫入內(nèi)存。在緩存中的數(shù)據(jù)是內(nèi)存中的一小部分,但這一小部分是短時間內(nèi)CPU即將訪問的,當(dāng)CPU調(diào)用大量數(shù)據(jù)時,就可避開內(nèi)存直接從緩存中調(diào)用,從而加快讀取速度。由此可見,在CPU中加入緩存是一種高效的解決方案,這樣整個內(nèi)存儲器(緩存+內(nèi)存)就變成了既有緩存的高速度,又有內(nèi)存的大容量的存儲系統(tǒng)了。緩存對CPU的性能影響很大,主要是因為CPU的數(shù)據(jù)交換順序和CPU與緩存間的帶寬引起的。
在現(xiàn)代CPU設(shè)計中,設(shè)計師們要解決的最主要問題,就是找到一個在CPU和內(nèi)存之間平衡的均點。Cache作為CPU---內(nèi)存的中轉(zhuǎn)站,在其中發(fā)揮了巨大的作用。CPU在請求數(shù)據(jù)或指令時,除了常規(guī)的在內(nèi)存中進(jìn)行查找外,還會在Cache中進(jìn)行查找。一旦命中,就可以直接從Cache中讀取,節(jié)約大量時間。正因為如此,CPU緩存在現(xiàn)代CPU中顯得越來越重要。
眾所周知,CPU緩存屬于SRAM(Satic Random Access Memory),它利用晶體管的邏輯開關(guān)狀態(tài)來存取數(shù)據(jù)。也正因為如此,SRAM內(nèi)部的電路構(gòu)造比起常見的DRAM(Dynamic Random Memory)要復(fù)雜得多,導(dǎo)致了成本的巨增。這也是SRAM不能普及的一個重要原因。
CPU緩存在計算機存儲系統(tǒng)中沒有編配固定的地址,這樣程序員在寫程序時就不用考慮指令是運行在內(nèi)存中還是Cache中,Cache對于計算機上層來說是完全透明的。
CPU在讀取數(shù)據(jù)時,會首先向內(nèi)存和Cache都發(fā)送一個查找指令。如果所需要的數(shù)據(jù)在Cache中(命中),則直接從Cache讀取數(shù)據(jù),以節(jié)約時間和資源。CPU對Cache的搜索叫做Tag search,即通過Cache中的CAM(CONtent Addressed Memory)對希望得到的Tag數(shù)據(jù)進(jìn)行搜索。CAM是一種存儲芯片,延遲很低,常用于網(wǎng)絡(luò)設(shè)備中用作路由選擇。