老樣子,在正式開始介紹「高速緩衝儲存器」之前,我們先來了解一下其相關的資訊。
這種結構進一步的驗證了儲存器的層次結構——高速緩衝儲存器位於暫存器之下的特點。好了,說了這麼多,那讓我們來看看高速緩衝儲存器的工作原理吧!
實際上,cache的工作原理非常簡單,就是利用了對映的方式來獲取主存資訊。
我們知道,主存的位址範圍是2^n(即2^n個字),而每個字都有乙個n位的位址。(不明白的可以翻翻這個系列的前幾篇文章)。所謂對映,就是兩個元素之間的對應關係。而我們很清楚,主存的容量肯定是遠遠大於高速緩衝儲存器的。所以,這種對映必然是一對多的關係,某部分高速緩衝儲存器中的內容對應著主存中的的吧部分內容。
為了實現上面所說的對映,我們需要對主存和快取進行塊的劃分,使這些「字塊」實現一對多的對映關係。簡略圖如下:
可以看見,我們將主存和快取劃分成了乙個又乙個的字塊,從而實現對映關係。
cpu想要處理資訊,首先就是看快取(高速緩衝儲存器)中是否存在資訊,如果存在,那麼好,就從快取中讀入乙個字(乙個字塊可能包括多個字);如果快取中沒有資料,那麼就會根據這種對映關係,將主存中的資料乙個字塊乙個字塊地對映到相應的位置,然後再由cpu進行讀取即可。
這裡有乙個名詞,叫做快取命中和快取不命中。上面說的兩種情況中的第一種就是快取命中,而後一種就是快取不命中。命中率是衡量快取的效率的。命中率越高,效率越好。命中率=快取命中/(快取命中+快取不命中)。
上面說的例子,可以理解為對映中的第一種方式——直接相連對映。下面我們就來詳細的了解一下對映方式。
下圖給出了直接對映的示意圖:
直接相連對映可以說是一種最簡單的方法,為什麼這樣說呢,因為他的邏輯最為清晰、也是最好理解的一種對映方式。
你可能會說,這麼複雜的乙個圖你跟我說這是最簡單的方法,你怕不是個傻子吧!不要急,聽我慢慢說。
首先,先看cache,cache被分成了2^c 塊,而主存則被分成了n*2^c, n就是n組,從圖中的連線線可以很直觀的看出,主存中的字塊0~2^c-1 塊對應著cache中的0~2^c-1 塊。而主存中的2^c 塊則是對應著cache中的第0塊,依次類推。即主存中的每一組字塊對應著cache中的相應字塊。
好了,對應關係說完了,我們來解釋一下圖中的其他內容。
首先說標記,標記代表的意義就是當前cache字塊中的資料是否有效。可以這樣想,我們之前講了快取命中和快取不命中,當cpu向快取推送位址,說「我想拿到cache中字塊0上的資料」,那麼好,cache首先要看看字塊0上的標記位是否為1,如果是1,就把這個資料給cpu,這就叫快取命中;如果標記位為0,則說明此時cache上的資料無效,則不推送,這就叫做快取不命中。你可能會這樣想:cache上的資料不都是從主存上拿到的嗎,為什麼還會有無效的時候呢?這樣的例子不少,比如說cache剛通電的那一瞬間,這時候cache上面是沒有資料的,標記位的0就起了很大作用。如果發現是0的話,接著主存會向cache推送資料的,這一點不必擔心。看到這,我相信你肯定也知道比較器是個什麼玩意了。
如果說直接相連對映是最簡單的方法的話,那麼全相連對映就是一種最粗暴的對映方式。還是先看圖:
我相信你此時一定知道我為啥說這是一種相當粗暴的對映方式了,沒錯,看到那交錯縱橫的線,一開始我是拒絕的,這貨太暴力了。
標記位自然是不用說,主要是這貨的主存不分組,主存中的任何乙個字塊都可以對映到cache中的任何乙個字塊,所以看起來十分的凌亂。但是還是有好處的,你看直接對映,比如說主存還是分成n組,也就是說cache中的每乙個字塊都有n個主存中的字塊對應,且主存中的字塊只能對應cache中的乙個字塊。所以說,如果cache中的資料沒有失效的時候,主存中的其他的n-1個字塊都是需要等待的。
但是全相聯對映不同——主存中的字塊可以對應任何乙個cache中的字塊,也就是說,如果主存想要向cache推送資料,只需要挑乙個失效的地方,將原有資料覆蓋即可。
這種方式比較混亂,電路可能會很複雜,同時又會造成較高的成本。
計算機組成原理很有意思,你會發現,在計算機結構的設計方案中,一般都是這樣的:有一種比較簡單的方案,但是效率並不怎麼好,然後有一種效率很好的方案但是可能過於複雜,接著就會出現第三種方案,一般這種方案都是以上二者的折中。在有效的消除了二者的缺點的同時,又極大的利用了二者的優點,不得不感嘆這些科學家的聰明才智。
首先說對應方式,組相聯的對映方式和直接相連的對映方式相同,都是主存中的每一組字塊中的每乙個字塊對應著cache中的乙個相應字塊,但是有不同之處在於,cache中的字塊分成了兩組,這種方式也叫做二路組相聯。
其次說下這種連線方式的優點:可以看到,在二路組相聯中,除非是cache中每塊的兩組字塊都被占用了,否則不存在衝突的問題,這大大提高了效率,同時又沒有全相聯那種暴力的方式。
漫談計算機組成
計算機有五大組成部分 運算器,控制器 cpu 儲存器 記憶體 輸入裝置,輸出裝置 cpu 是一塊超大規模的積體電路,是一台計算機的運算核心 core 和控制核心 control unit 它的功能主要是解釋計算機指令以及處理計算機軟體中的資料。cpu包括運算邏輯部件 暫存器部件和控制部件等 記憶體 ...
計算機組成 高速緩衝儲存器Cache
以前計算機是兩層儲存結構 主存和輔存。現在大多出計算機中的三層儲存結構是 快取記憶體cache 主 儲存器和輔助儲存器。那為什麼要提出快取記憶體呢?主要的原因是為了提高儲存器的平均訪問速度。使儲存器的速度與cpu的速度想匹配。那快取記憶體是如何提高儲存器的速度?首先介紹一下快取記憶體,名叫cache...
計算機組成原理cu 計算機組成原理 計算機概論
現代計算機樣式千奇百怪,常見的有我們的筆記本,台式電腦,也有各種伺服器 手機 攝像頭等都屬於計算機範疇。計算機包含我們看得見摸得著的計算機實體,稱為計算機硬體,如cpu 記憶體 各種掛接裝置等 還有我們看不見摸不著的軟體,它支援著硬體按照我們的預想在操作,包括系統軟體和應用軟體 計算機硬體樣式千奇百...