轉載自https://blog.csdn.net/chen1083376511/article/details/8187481
cache-高速緩存存儲器
在主存與CPU之間插入一級或多級SRAM組成的高速緩存存儲器。擴展cache有限,因為SRAM價格昂貴。
cache作用:為了解決CPU和主存之間速度不匹配而采用的一項重要技術。
cache特性:具有空間局部性以及時間局部性。
cache的組成:SRAM和控制邏輯。如果cache在CPU芯片外,它的控制邏輯一般和主存控制邏輯合成在一起,稱主存/cache控制器。若cache在CPU內,則由CPU提供它的控制邏輯。
CPU與cache之間的數據交換是以字為單位,而cache與主存之間的數據交換是以塊為單位。一個塊由若干字組成,是定長的。
cache原理圖
ache的命中率:為了使主存的平均讀出時間盡可能接近cache的讀出時間,cache命中率應接近於1.
地址映射
含義:為了把主存塊放到cache中,必須應用某種方法把主存地址定位到cache中,稱作地址映射。
地址映射方式:全相聯映射方式、直接映射方式和組相聯映射方式。
全相聯映射方式
小結:
(1)在全相聯cache中,全部標記用一個相聯存儲器來實現,全部數據用一個普通RAM來實現。
(2)優點”沖突率小,cache利用率高
(3)缺點:比較器難於設計與實現
(4)只適用小容量cache。
直接映射方式
小結:
(1)優點:硬件簡單,成本低。
(2)缺點:每個主存塊只有一個固定得行位置可存放。
(3)發生沖突率大。(如果塊號相距m整數倍得兩個塊存於同一cache行時)
(4)適合大容量cache.
組相聯映射方式
小結:
適度兼顧了“全相聯映射方式”和“直接映射方式”的優點以及盡量避免兩者的缺點。
替換策略
含義:當一個新的主存塊需要拷貝到cache,而允許存放塊的行位置都被其他主存占滿時,就要產生替換。
適合的地址映射方式:全相聯映射方式和組相聯映射方式
(1)最不經常使用(LFU)算法
含義:將一段時間內被訪問次數最少的那行數據換出。每行設置一個計數器,從0開始計數,每次訪問某一行時被訪問的計數器增1.當需要替換時,將計數值最小的行換出,同時將這些行的計數器全部清零。
特點:這種算法將計數周期限定在對這些定行兩次替換之間的間隔時間內(即替換一次,計數器清零一次),不能嚴格反映近期訪問情況。
(2)近期最少使用(LRU)算法
含義:將近期內長久未被訪問過的換出。每行設置一個計數器,Cache每命中一次,命中行計數器清零,其他各行計數器增1.當需要替換時,將計數值最大的行換出。
特點:這種算法保護了剛拷貝到cache中的新數據行,有較高的命中率。
(3)隨機替換
含義:從cache的行位置中隨機地選取一行換出。
特點:在硬件上容易實現,且速度也比那幾種策略快。但可能降低cache命中率和工作效率。
(4)先入先出(FIFO)算法
含義:總是將最先調入的cache的內容替換出來,不需要隨時記錄各字塊的使用情況。
特點:容易實現,電路簡單。但是可能會把一些經常使用的程序(如循環程序)也作為最早的cache塊而替換出去。
cache的寫回操作策略
含義:CPU對Cache的寫入更改了Cache的內容。當被更改了內容的Cache塊被替換出Cache時,選用寫回操作替換策略使Cache內容和主存內容保持一致。
(1)寫回法
當CPU寫Cache命中時,只修改Cache的內容,而不立即寫入主存;只有當此行被替換出時才寫回主存。
優點:減少了訪問主存的次數。
缺點:存在不一致性的隱患。
解決問題:每個Cache行必須配置一個修改位,以反映此行是否被CPU修改過。
(2)全寫法
當CPU寫Cache命中時,Cache與主存同時發生寫修改。因而較好地維護了Cache與主存內容的一致性。當CPU寫Cache未命中時,直接向主存進行寫入。
優點:Cache中每行無需設置一個修改位以及相應的判斷邏輯。
缺點:cache對CPU向主存的寫操作無高速緩沖功能,降低了Cache的功效。
(3)寫一次法
基於寫回法並結合全寫法的寫策略,寫命中與寫未命中的處理方法與寫回法基本相同,只是第一次寫命中時要同時寫入主存(全寫法)。
優點:便於維護系統全部Cache的一致性。