計算機Cache基本原理

2021-10-03 02:43:05 字數 2961 閱讀 7711

計算機裡面的記憶體一般情況下速度是比cpu要慢的多,所以為了解決這個問題,大家都想了很多辦法,其中有個是在cpu和記憶體之間增加乙個高速緩衝器cache的辦法。

目錄

區域性性原理      

結構和流程

實現方式

cache的對映方法

(1)fully-associated 全相連對映

(3)set-associated 組相連:

替換演算法

總結 其原理就是運用區域性性原理提前把部分的內容先存到讀取速度很多cache中去,減少cpu訪問主存的次數,減少cpu資料的讀取時間。大多是提高cpu和程式儲存自己的方法都是運用了區域性性原理,主要是時間區域性性和空間區域性性。時間區域性性原理:你正在訪問的內容近期還很有可能訪問。空間區域性性原理,你訪問的內容物理上的位址都是接近的。比如說陣列的讀取。

其結構如圖所示:

在cpu想獲取資料的時候,再首先是判斷資料在不在cache上,如果在cache上的話,很高興,直接就獲取了資料,如果不在,那麼就返回主存獲取資料,然後更新到cache中去。cpu對主存寫入重新整理資料的時候,就有點麻煩了,有兩種方式,一種是即寫cache又寫記憶體,簡稱寫穿,另外一種就是我cpu只寫乙個cache,然後讓cache更新記憶體的位址。

如圖所示:計算機的主存位址其實是可以分開的,分成二維的位址,低位的資料可以作為快的塊內的位址。高的位數可以作為快本身的位址。我們然後將塊的位址再分成前後兩個部分。低位的部分可以作為index指示位數,因為cache的空間比主存小的多,所以不是所有的資料都可以裝的下去,肯定是有多個記憶體空間對應乙個cache位置的情況,就像乙個茶壺會配有多個茶杯,但是茶壺一次只能給乙個茶杯倒茶!所以茶杯需要有一些對映和競爭機制去爭奪茶壺。這個index就是這個對映機制的重要的資料**。這個位址的高位數的tag是為了判斷多個主存位址到底現在是哪個位址對映到cache的位置的。是不是我現在想要的資料的。

cache的結構如右圖所示,主要是分成四個部分,第乙個是tag部分,主要是存當前的行的data資料對應的主存位址最前面的tag部分,是判斷的是不是想要的資料的依據。data部分儲存的是主存的塊資料,它的大小和主存的塊部分的大小是一致的。valid位是表面當前的cache資料是否是有效的。dirty位是表示當前的資料是否被汙染了~!

cpu讀取資料的過程是這樣的,位址匯流排給出資料的位址,進入了相關聯存儲存器。把位址匯流排的位址剝離出tag部分和index部分,然後通過index去cache儲存空間去比較某個行的tag資料是不是我想要的tag資料,或者是剝離出tag資料後,也可以直接和所有的cache的tag比較,看看有沒有我想要的tag,如果tag比較成功的話,就說嘛命中了。那麼就會從cache中讀取資料傳回cpu,如果沒有的話,就要直接去主存中獲取了。然後更新cache的某個部分。並且傳回資料給cpu。

cache對映的方式大概有是三種:

主存的資料塊可對映到cache任意行,同時將該資料塊位址對應行的標記儲存體中儲存。這種方法的cache利用率高,塊的衝突率低,淘汰演算法複雜。主要是給小容量的cache用的

主存分塊後還將以cache行的數為標準進行分割槽。也就是說記憶體位址有**,區號,區內位址,塊內位址。其中的區內位址最大值和cache的行數是一樣的。所以可以根據這個自己對映過去。這種方式的話cache經常會有空餘的,利用率低。快衝突率高,因為是多個相連的區對映到乙個cache行。淘汰演算法就比較簡單了。主要是應用到大容量的cache中去

組相連對映,這個就比較好玩了,首先是對cache分組,同乙個組的cache內部資料是隨機對映的就和全相連是一樣的。然後根據一共有多少個組隊主存進行分組。同乙個組的每個主存快的資料對應乙個組,但是屬於同乙個組的資料可以放到cache的同乙個組的任意位置。比如說,下圖的主存的b0和b1,分別對應s0和s1,但是可以是s0和s1的任意位置。

這個就沒有什麼好說的了,就是cache的空間有限,如果碰到不在cache的資料,並且cahe已經沒有空間的話,需要挑選一行資料踢出去,存入cpu剛剛訪問的主存資料。這個就是替換演算法

(1)先入先出 fifo,簡單粗暴,先如先出

(2)最不經常使用 lfu=  least frequenctly used :使用頻率最低的。每次命中後訪問次數就+1,記錄一下,訪問重複訪問次數最低的就是頻率最低的。

(3)近期最少使用 lru=  least recently used :使用時間最遠的,每次訪問資料就將記錄訪問時間計數器清零,沒有訪問到的就+1,資料最大的踢掉。

(4) 隨機替換

總的來說,cache的存在讓cpu提高了訪問主存的速度,同時沒有感覺到cache的存在~!

計算機基本原理

1.什麼是語言?什麼是python語言?語言是乙個事物與另乙個事物溝通的介質,python語言則是程式設計師與計算機溝通的渠道。2.什麼是程式設計?程式設計就是程式設計師將自己想要讓計算機做的事情用程式語言翻譯出來寫到一系列的檔案中,這一系列的檔案稱之為程式 軟體。3.為何要程式設計?程式設計的目的...

計算機的基本原理

論可計算數在判定問題中的應用 一文中提出了一種理想的計算機器的數學模型 圖靈機,其由一條雙向無限延長儲存帶和乙個可以儲存當前自身的狀態控制器,該控制器並且包含乙個讀寫頭,可以讀 寫 更改儲存帶上每一格的數字 字母,可以根據讀到的字母 數字變換自身的狀態,可以沿著儲存帶一格一格地左移 右移。其規則的確...

Cache基本原理

在設計和開發系統程式和應用程式時,程式設計師通常採用模組化的程式設計方法。某一模組的程式,往往集中在儲存器邏輯位址空間中很小的一塊範圍內,且程式位址分布是連續的。也就是說,cpu在一段較短的時間內,是對連續位址的一段很小的主存空間頻繁地進行訪問,而對此範圍以外位址的訪問甚少,這種現象稱為程式訪問的區...