(自我複習)(計算機組成原理)(Cache-內存-外存關係)

Cache,內存,外存所組成的三級存儲器無疑在計算機的體系裏佔據了無比重要的低位(看看計組/微機書裏面的計算機的組成中,計算機的核心是存儲器就知道了)。而且這個部分無疑也是機組這門課程裏面極其重要的一個部分。

計算機的三級存儲體系中,通過Cache、內存、外存的相互配合協調,使得運算速度、存儲容量和成本得到非常良好的兼顧作用。其中,Cache-內存之間的協作方式叫做地址映射,而內存-外存之間的協作方式叫做虛擬存儲器。這兩個協作方式之間存在很多的共同點。也存在一些差別。本篇博客旨在根據我的教科書的內存,簡要總結一下,權當自己對這本教材的複習。

一、基本介紹
Cache的中文名字叫做高速緩衝存儲器,它的讀取、寫入速度都遠遠高於內存,但是成本也同時變得很高。因此由於成本的現在,Cache的容量勢必不能做的很大,因此,在電腦執行程序的過程中,我們通常只把內存中的一小部分最常讀寫的數據移入Cache中(當然實際上這個操作不用我們去管理,使用這樣的一個說法只是爲了敘述方便,不要會錯意)。

當我們需要在內存中讀取某些數據的時候,我們會先在Cache之中尋找是否已經包含了包括這些數據的一個“塊”。如果找到了,稱爲“命中”,否則稱爲“不命中”。
命中的時候,我們就相當於使用讀取Cache的速度來讀取內存。而不命中的時候,我們就需要把內存中的數據塊搬到Cache之中去。

而命中率公式顯然爲
h=NN+N
同時我們也知道這個Cache-內存系統的平均訪問時間爲內存訪問時間和Cache訪問時間的加權平均值。
tAverage=htCache+(1h)tMemory
也很容易理解訪問效率
e=tCache/tAverage
二、Cache內存聯動策略
1、映射策略
當Cache不命中的時候,我們就需要從內存中取出某一個數據塊放入Cache的某個地方。因此我們有不同的映射策略。我們可以把每一個內存塊對應於Cache中的一個區域。這就是直接映射。很容易知道,由於Cache的大小遠遠小於內存的大小,因此,Cache中的每一個區域都會對應內存之中的多個塊,因此如果程序需要多次訪問兩個映射在同一個Cache區域的內存塊,那麼就會頻繁把Cache中的數據移入Cache之中。導致命中率大爲降低,程序運算速度大幅下降。

第二種映射方式叫做全相聯映射,在這種方式下,我們只是把Cache視爲一個桶,不考慮某個數據塊應該放入哪些特定的位置,把Cache中所有位置視爲相同的,僅僅把數據塊放入某個位置中。這種方式的主要缺點是,當我們需要在Cache中尋找某個數據塊,或者知道它是否已經被調入Cache之中的時候,需要循序遍歷Cache中每個區域,直到找到、或者到達尾部爲止。

第三種映射方式叫做組相聯映射,這種映射方式是上面兩種的綜合。我們把Cache分爲多個組,每個組存在多個塊,而每個內存塊只對應Cache中的某個組,但是可以放入這個組裏面的某個塊之中。這種方式可以視爲設置了多個桶,每個內存塊都只對應一個桶,只能夠放入這個桶裏面的某個地方。但是每個桶之中有多個區域,內存塊可以放入這個區域之中的任何地方。當我們需要讀取某個內存塊的時候,我們先根據內存塊的地址得到我們需要的桶需要,找到這個桶,然後順序遍歷這個桶,尋找是否存在我們需要的內存塊。如果命中了,

2、替換策略
當新的內存塊被填入Cache時,通常需要替換掉Cache之中的某一個數據塊。這就產生了一個問題,替換哪一個數據塊?這裏一般存在3種替換策略:

1.先進先出。2.近期最少使用。3.隨機替換。

一般使用第二個策略,能夠有效提高命中率。

(未完待續,有生之年完成這個博客)

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