挑戰408——組成原理(14)——Cache工作原理

爲什麼要引入Cache

cache,高速緩衝存儲器,是一種以RAM爲材料製成的高速存儲器。引入的原因主要有:

  1. I/O設備向主存的訪問級別高於CPU,在I/O訪存期間,CPU將處於空閒狀態。
  2. 主存速度的提高始終跟不上CPU的發展,主存與CPU的速度明顯不匹配

局部性原理

程序訪問的局部性原理包括時間局部和空間局部性。前者是指最近未來要用到的信息很可能是正在使用的信息,這是因爲程序存在循環。後者是指指令和數據在內存中都是連續存放的並且有些指令和數據往往會被多次調用(如子程序,循環程序和一些常數)。因此只要將CPU近期要用到的程序和數據前從主存送到Cache,這樣大多數情況下,CPU都能直接從Cache中取得指令和數據。

Cache的工作原理

Cache是一種容量小而速度快的高度緩衝器,由快速的SRAM組成,直接做在CPU內,速度幾乎與CPU一樣快,任何時刻都有一些主存塊處於緩存之中,因此,CPU欲訪問主存的時候,有兩種可能:

  1. 所需要的字已經在緩存中,於是CPU直接訪問Cache,(通常一次傳送一個字,主存不參與)
  2. 所需要的字不在緩存中,那麼此時需要將字所在的主存塊整塊一次調入Cache中,(即主存-Cache之間以塊爲單位進行傳送 )。主存塊調入緩存的過程,稱爲建立對應關係。

我們將第一種情況稱爲
CPU訪問Cache命中,簡稱Cache命中。第二種情況爲不命中。由於緩存塊數目遠小於主存數,因此每個緩存快要設立一個標識,用來表明當前存放的是哪一個主存塊。
Cache的容量與長度是影響Cache效率的重要因素,通常用命中率來衡量Cache的效率 。
在一個程序執行期間,設總的命中次數爲Nc,訪問主存的次數爲Nm,那麼命中率可以這樣表示:
在這裏插入圖片描述
設Tc爲命中時Cache的訪問時間,那麼Tm爲未命中時的主存訪問時間,那麼平均訪問時間爲;
在這裏插入圖片描述
其中H爲命中率,顯然1 - H就是未命中率。
顯然,越好的Cache,其Ta值越接近Tc(即H接近於1)。

Cache與主存之間的映射

在Cache中,地址映射是指把主存地址空間映射到Cache地址空間,在將主存塊複製到Cache中的時候遵循一定的映射規則,標誌位爲1時候,表示其Cache映射的主存塊數據有效。(注意與地址變換的區別,地址變換是指CPU在訪存的時候,將主存地址按照映射規則換算成Cache地址的過程 )。
地址映射有三種方式:直接映射,全相聯映射,組相聯映射、

  1. 直接映射
    這種方式主存塊只能裝入Cache的唯一位置,若該位置已有內容,則產生塊衝突,原來在Cache中的塊將無條件被替換出去,直接映射的關係可以定義爲:
j = i mod2^c

其中,j爲Cache的塊號或者行號。i爲主存塊號,2^c爲Cache的總塊數,因此主存的
在這裏插入圖片描述
只能映射到第0行,依次類推,其地址結構爲:
在這裏插入圖片描述
CPU的訪存過程:首先根據地址中間的Cache字塊地址,直接找到對應的Cache塊號,若塊號的有效位爲1,則表示命中,否則爲不命中此時從主存中讀取該地址所在的主存塊號,並將其內容送到對應的Cache塊並將有效位置1,同時將內容送到CPU。
缺點:這種方式映射不夠靈活
2. 全相聯映射
這種方式可以把主存數據塊裝入Cache的任意一塊, 方式可以從已佔滿的Cache存儲塊中,替換出任一舊塊,顯然這種方式靈活,命中率也高,縮短了塊衝突,與直接相聯映射相比,其主存字塊位數增加,使得Cache標記位增多地址變換速度慢。通常使用“按內容尋址的”相聯存儲器。其地址結構爲:
在這裏插入圖片描述
3. 組相聯映射
將Cache空間分成大小相同的組,主存的一個數據塊可以裝到組內的任一個位置,即組間採取直接映射,組內採取全相聯映射。
如果把Cache分成Q組,每組有R塊,那麼有:
i= j % q
其中i爲緩存的組號,j爲主存塊號主存地址分爲三個字段:
在這裏插入圖片描述
當組內2塊的時候,稱爲2路組相聯映射。
下一篇將介紹一下Cache相關的算法跟計算。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章