0 簡介
cache是什麼?
-
廣義上:k是k+1的cache
-
狹義上:寄存器和內存之間的存儲空間,由SRAM,處理邏輯地址
-
Cache size
-
Block size
-
Miss or hit
-
Pre-fetch or demand fetch
-
Placement
-
Replacement
FIFO
LRU最近用的最少的,淘汰最長時間沒有被使用的頁面
LFU最不經常使用,淘汰使用次數最少的 -
Write/update
Write through 直寫:寫入cache時,也寫入內存
Write back 寫回:寫入cache後,當要被換掉才寫入內存
1 緩存類型(根據實現分類)
映射方式
映射方式 | 映射特點 | 地址 | 對地址的描述 |
---|---|---|---|
直接映射Direct | 多個內存塊對一個cache塊 | 標記:指明當前 Cache 是主存中哪一塊的副本,位數由地址位數減去另外兩部分得到 Cache字塊地址:由block數log2確定位數 字塊內地址:由word大小確定位數log sizeof(word) |
|
全關聯映射 full associative | 隨意亂存 | 字塊內地址:由word大小確定位數log sizeof(word) | |
組關聯映射 set | 組間直接映射,組內隨意 | ||
字塊內地址:由word大小確定位數log sizeof(word) |
組關聯的所以位置
- 將高位作爲索引:內存相鄰的塊映射到同一個block(沒有利用號空間局部性)
- 將低位作爲索引:連續內存行,映射到不同的緩存行
有效訪問時間:EAT
- 與命中率有關,是算術平均值
TLB:轉址旁路緩存,存地址
2 編寫緩存友好代碼和緩存感知優化 Writing caching friendly code and cache-aware optimization
重點:局部性原理的使用
case | 類型 | 原本代碼 | 修改後 | 解釋 |
---|---|---|---|---|
1 | Instruction cache overflow | 大循環違背局部性原理 | ||
2 | Cache Collisions | |||
3 | Insufficient spatial locality | |||
4 | Insufficient temporal locality |
矩陣乘法