根據不同的分類標準可以按以下3種方法對Cache進行分類。
?1)數據cache和指令cache
?● 指令cache:指令預取時使用的cache。
?● 數據cache:數據讀寫時使用的cache。
如果一個存儲系統中指令cache和數據cache是同一個cache,稱系統使用了統一的cache。反之,如果是分開的,那么稱系統使用了獨立的cache;如果系統中只包含指令cache或者數據cache,那么在配制系統時可以作為獨立的cache使用了。
使用獨立的數據cache和指令cache,可以在同一個時鐘周期中讀取指令和數據,而不需要雙端口的cache,但這時候要注意保證指令和數據的一致性。
?2)寫通(write-through)cache和寫回(write-back)cache
?● 寫回cache CPU在執行寫操作時,被寫的數據只寫入cache,不寫入主存,僅當需要替換時,才把已經修改的cache塊寫回到主存中,在采用這種更新算法的cache快表中,一般有一個修改位,當一塊中的任何一個單元被修改時,這一塊的修改位被設置為1,否則這一塊的修改位仍保持為0;在需要替換這一塊時,如果對應的修改位為1,則必須先把這一塊寫到主存中去之后,才能調入新的塊,否則,只要用新調入的塊覆蓋該塊即可。
?● 寫通cache CPU在執行寫操作時,必須把數據同時寫入cache和主存,這樣,在cache的快表中就不需要“修改位”,
當某一塊需要替換時,也不必把這一塊寫回到主存中,新調入的塊可以立即把這一塊覆蓋掉。
寫回cache和寫通cache的優缺點比較如下表所示。
寫回cache與寫通cache比較
?3)讀時分配(read-allocate)cache和寫時分配(write-allocate)cache
?● 讀時分配cache當進行數據寫操作時,如果cache沒命中,只是簡單地將數據寫入主存中,主要在數據讀取時,才進行cache內容預取。
?●寫時分配cache當進行數據寫操作時,如果cache未命中,cache系統將會進行cache內容預取,從主存中將相應的塊讀取到cache中相應的位置,并執行寫操作,把數據寫入到cache中。對于寫通類型的cache,數據將會同時寫入到主存中,對于寫回類型的cache,數據將在合適的時候寫回到主存中。
由于寫操作分配cache增加了cache內容預取的次數,增加了寫操作的開銷,但同時可能提高cache的命中率,因此這種技術對于系統整體性能的影響與程序中讀操作和寫操作的數量有關。
Cache替換算法
隨機替換算法
通過一個偽隨機數發生器產生一個偽隨機數,用新塊編號為該偽隨機數的cache塊替換掉。這種算法很簡單且容易實現,但沒有考慮程序的局部性特點,也沒有利用歷史上塊地址流的分布情況,因而效果較差,同時這種算法不易預測最壞情況下cache的性能。
輪轉替換算法
維護一個邏輯的計數器,利用該計數器依次選擇將要被替換出去的cache塊。這種算法容易預測在最壞情況下cache的性能。但在程序發生很小的變化時,可能造成cache平均性能的急劇變化,這是它的一個明顯缺點。
-
cpu
+關注
關注
68文章
10855瀏覽量
211590 -
數據
+關注
關注
8文章
7003瀏覽量
88944 -
存儲
+關注
關注
13文章
4297瀏覽量
85801 -
Cache
+關注
關注
0文章
129瀏覽量
28332
發布評論請先 登錄
相關推薦
評論