Cache 基本概念

2021-10-01 14:25:17 字數 2325 閱讀 4982

cache用來存放最近cpu訪問的一些memory的數值

l1 cache:離cpu比較近的cache,有i-cache,d-cache

l2 cache:離cpu比較遠的cache,如果沒有內部的,可以在外面加

cpu盡可能從cache裡取資料,就減少了向外面訪問的頻率

同時也減小了功耗,外部功耗會比較大,內部memory功耗較小

盡可能讓cpu對onchip的部件進行操作

乙個line一般是4到8word

way由很多line組成,可以理解為片,data ram裡由很多位組成,

memory位址空間裡面的資料可以放在不同的way裡面

set是不同way中的同乙個line

tag用於標記memory位址,來自於訪問位址,往往是最上面的

存放在tag ram裡面

cpu訪問cache的時候,首先會訪問tag ram,有沒有對應的位址,如果匹配,那麼就從cache裡拿資料或者把資料寫到cache裡面

index來自位址,查詢到底資料在那個cache line裡面

位址由 組號 組內塊號 塊內位址組成,其中塊內位址又被進一步分開成offset 和bytes的選擇

舉例:

valid代表cache line是不是有效的

dirty bit 代表cacheline裡面的資料是不是最新的,和外面的是不是一致的

如果是dirty就是不一致的

cache line是怎麼分配的

根據index找到是哪個cache line,然後把tag的物理區域,和index找到的tag ram裡存放的tag值進行比較,如果匹配,就cache hit 否則就cache miss

在兩個ways裡都會去找

這裡也是兩個ways,4個sets,但是cpu起始的位置變了,從0x70開始

cpu發出訪問位址的時候,會分配到set3,30也是,已經被分配好了

b0本來也應該分配到set3,但是set3已經被占去了,這時候有三種策略

一、 隨機策略(random):b0中的資料隨機分配到way0或者way1的某個set中

二、 輪詢方式(round robin),先是way0再是way1

三、 lru(least recently used) 看哪個最近最少使用

發生cachemiss的時候,這時候要分配cache line了,會讀一整行的資料到cache line裡面來,這個過程叫cache linefill

write allocation

寫的位址首先會到cache中,發現有cache miss的情況發生,同樣的,也需要cache linefill。之後把寫的東西寫到cache line裡面去或者memory裡面去。

write的時候有個策略:

把數值從memory寫到cache line裡面,然後cpu寫cache line,就認為結束了,等待cache一塊寫道memory中,稱為write back。另一種是不光要寫cache中的內容,還要寫memory中的內容,這樣兩個儲存體裡的資料保持一致。

cache 分類

根據cache的index和tag**,可以把cache分為很多種類:

vivt: virtual index virtual tag,顧名思義,索引cache時的index來自virtual address(虛擬位址),tag同樣也來自虛擬位址

vipt: virtual index physical tag,顧名思義,索引cache時的index來自virtual address(虛擬位址),tag來自physical address(實體地址),通常用於instruction cache

pipt: physical index physical tag,顧名思義,索引cache時的index和tag 都來自physical address(實體地址),通常用於data cache

CaChe基本概念及工作原理

計算機中程式執行時所有的指令和資料都是從儲存器中取出來執行的。儲存器是計算機系統中的重要組成部分,相當於計算機的倉庫,用來存放各類程式及其處理的資料。因此儲存器的容量和效能應當隨著處理器的速度和效能的提高而通過提高,以保持系統效能的平衡。然而在過去的 20 多年中,隨著時間的推移,處理器和儲存器在效...

高速緩衝器 cache 基本概念

一是由於i o裝置與cpu之間會爭訪記憶體,導致降低cpu的效率,則可以在cpu與主存之間加上一級快取.二是,因為摩爾定律的原因cpu的速度遠遠高於主存的速度,再加上儲存體系的原因,越快速度的儲存器成本越高,就需要乙個快取記憶體來解決主存與cpu速度不匹配的問題 cache出現使cpu不直接訪問主存...

基本概念 C 基本概念

由於工作中需要用到c 編寫的一些工具,有時候需要根據需求修改或者定製工具,所以現在不得不學習一下c 的基礎語法,此為筆記,不成章法!機器語言 組合語言 高階語言 面向過程的程式設計方法 物件導向的程式設計方法 泛型程式設計方法 1 演算法設計 2 源程式編輯 3 編譯 4 連線 5 執行除錯 輸入裝...