07 降低cache不命中率

2021-10-04 20:00:14 字數 1299 閱讀 1709

目錄

8種降低cache不命中率的方法

增加cache大小

增加cache容量

提高相連度

偽相連cache

硬體預取

編譯器控制的預取

編譯優化

"犧牲"cache

三種型別的不命中 分類

強制性不命中

容量不命中

衝突不命中

三種不命中所佔的比例

減少三種不命中的方法

對於給定的cache容量, 當塊大小增加時, 不命中率開始是下降的, 後來反而上公升

原因: 一方面減少了強制性不命中, 另一方面又增加了衝突不命中

相連度超過8就意義不大了

提高相連度是以犧牲命中時間為代價

2 : 1 cache經驗規則

容量為n的直接映像cache不命中率和容量為n/2的二路組相連的cache不命中率相同

優點: 命中時間小, 不命中率低

工作原理

在邏輯上把直接映像的cache上下分成兩個區. 對於任何一次訪問, 偽相連cache先按照直接映像cache的方式去處理. 若命中, 則訪問方式和直接映像cache的方式一樣. 若不命中, 則去另乙個區的對應位置去查詢. 若找到則發生偽命中, 否則就去訪問下一級儲存器

快速命中和慢速命中

分別對應快速命中和慢速命中

指令和資料都可以預取

目的: 使執行指令和讀取資料可以重疊執行

每次預取花費一條指令的開銷

按照預取資料所放置的位置可以分為兩種

暫存器預取

cache預取

按照預取的處理方式可以分為

故障性預取

非故障性預取

通過對軟體進行優化來降低不命中率

程式**和資料重組

重新組織程式而不影響程式的正確性

能減少衝突不命中次數而又不影響時鐘頻率的方法

基本思想

在cache和它的下一級儲存器之間設定乙個全相連的小cache, 用於存放剛被替換出去的塊, 以備重用.

優點: 可以明顯減少衝突不命中

第一次訪問cache的不命中就是強制性不命中

某些塊剛被替換出去又要重新訪問, 這個就是容量不命中

(碰撞不命中, 干擾不命中)

相連度越高, 衝突不命中就越少

強制性不命中和容量不命中不受相連度的影響

強制不命中不受cache容量的影響, 但容量不命中卻隨著容量的增加而減少

強制性不命中: 增加快大小 預取

容量不命中: 增加容量

衝突不命中: 增加相連度

Cache命中率計算例項

題目 課堂 一次 63 70 迴圈10次 15 32,80 95 a 假設cache採用直接對映技術。主存塊0,4,指派到行0 塊1,5,指派到行1 以此類推。請計算命中率。b 假設cache採用二路組關聯對映,共有兩組,每組兩行。偶序號塊被指派到組0,奇序號塊被指派到組1。請計算使用lru替換策略...

快取命中率

安裝 docker redis 查詢乙個不存在的key 127.0.0.1 6379 get test nil 在看命中率 新插入乙個值 name 127.0.0.1 6379 set name jackma ok查詢name 127.0.0.1 6379 get name jackma 再看命中率...

快取命中率

避免命中 函式計算 無服務架構 tmp 初始化清空 tmp空間限制,新檔案生成 利用命中 快取命中率 終端使用者訪問加速節點時,如果該節點有快取住了要被訪問的資料時就叫做命中,如果沒有的話需要回原伺服器取,就是沒有命中。取資料的過程與使用者訪問是同步進行的,所以即使是重新取的新資料,使用者也不會感覺...