CACHE

CACHE

cache高速緩衝存儲器一種特殊的存儲器子系統,其中複製了頻繁使用的數據以利於快速訪問。存儲器的高速緩衝存儲器存儲了頻繁訪問的RAM位置的內容及這些數據項的存儲地址。當處理器引用存儲器中的某地址時,高速緩衝存儲器便檢查是否存有該地址。如果存有該地址,則將數據返回處理器;如果沒有保存該地址,則進行常規的存儲器訪問。因為高速緩衝存儲器總是比主RAM存儲器速度快,所以當RAM的訪問速度低於微處理器的速度時,常使用高速緩衝存儲器。

基本信息

“Cache”是什麼?

Cache(即高速緩衝存儲器(Cache Memory),是我們最常聽到的一個詞了。在老鳥們眼中,這個詞或許已沒有再談的必要,因為他們對Cache從設計的必要性到工作原理、工作過程等等都已了如指掌了;而對菜鳥朋友們而言,這些未必就很清楚。那么,它們到底是指的什麼呢?不用急,下面就請隨筆者一起來全面認識Cache。

為什麼要設計Cache?

我們知道,電腦的記憶體是以系統匯流排的時鐘頻率工作的,這個頻率通常也就是CPU的外頻(對於雷鳥、毒龍系列的處理器,由於在設計採用了DDR技術,CPU工作的外頻為系統匯流排頻率的兩倍)。但是,CPU的工作頻率(主頻)是外頻與倍頻因子的乘積。這樣一來,記憶體的工作頻率就遠低於CPU的工作頻率了。這樣造成的直接結果是:CPU在執行完一條指令後,常常需要“等待”一些時間才能再次訪問記憶體,極大降了CPU工作效率。在這樣一種情況下,Cache就應運而生了!

CACHECACHE
CACHE:Cache是一種特殊的存儲器,它由Cache 存儲部件和Cache控制部件組成。Cache 存儲部件一般採用與CPU同類型的半導體存儲器件,存取速度比記憶體快幾倍甚至十幾倍。而Cache 控制器部件包括主存地址暫存器、Cache 地址暫存器,主存—Cache地址變換部件及替換控制部件等。至於它們各自又是怎樣工作的、有何作用等等,我想我們就沒有必要做進一步的研究,知道一般Cache分為L1 Cache(其中又分為數據Cache、代碼Cache)、L2 Cache就行了。

CACHE是怎么工作的?

我們知道,CPU運行程式是一條指令一條指令地執行的,而且指令地址往往是連續的,意思就是說CPU在訪問記憶體時,在較短的一段時間內往往集中於某個局部,這時候可能會碰到一些需要反覆調用的子程式。電腦在工作時,把這些活躍的子程式存入比記憶體快得多的Cache 中。CPU在訪問記憶體時,首先判斷所要訪問的內容是否在Cache中,如果在,就稱為“命中”,此時CPU直接從Cache中調用該內容;否則,就稱為“不命中”,CPU只好去記憶體中調用所需的子程式或指令了。CPU不但可以直接從Cache中讀出內容,也可以直接往其中寫入內容。由於Cache的存取速率相當快,使得CPU的利用率大大提高,進而使整個系統的性能得以提升

CACHE的套用

CACHECPU

早在486時代,主機板上就設計了Cache插槽,用戶可以根據需要自己配置Cache;586級的CPU晶片中已集成了部分Cache,同時還保留了Cache插槽供用戶擴充,而到了Pentium Ⅱ時代後,Cache已全部集成到了CPU晶片中,主機板上再也沒有Cache插槽。現在比較流行的CPU晶片中一般集成了至少16KB的代碼Cache 和16KB的數據Cache(作為L1 Cache),以及至少64KB的L2 Cache。

有的朋友可能會問,既然Cache的作用如此重要,那為么不把電腦的全部記憶體都變為Cache,那樣不是更好嗎?其實對於這個問題,撇開價格因素,單就其實用性而言也是沒有必要的,畢竟,電腦在執任務時,那種使用頻率非常高的子程式或指令不是很多的,因此那些使用頻率不太高的內容只須保存在速度相對較低的記憶體中就可以了!

在實際套用中,Cache,尤其是L2Cache對系統的性能,特別是對浮點運算能力有較大的影響。而我們知道,大部分遊戲的流暢運行需要頻繁的浮點運算。因此,CPU運行遊戲的性能的好壞與L2Cache的容量與速度有很大關係。

地址映像

·地址映像
所謂映象問題是指如何確定Cache中的內容是主存中的哪一部分的拷貝,即必須套用某種函式把主存地址映象到Cache中定位,也稱地址映象。當信息按這種方式裝入Cache中後,執行程式時,應將主存地址變換為Cache地址,這個變換過程叫作地址變換。地址映象方式通常採用直接映象、全相聯映象、組相聯映象三種

CACHE硬碟
1、直接映像

是指每個主存頁只能複製到某一固定的Cache頁中。直接映像的規律是:將主存的2048頁分為128組,每組有16頁,分別與Cache的16頁直接對應,即主存的第0頁、第16頁、第32頁……只能映像到Cache的第0頁。

2、全相聯映像

全相聯映像是指主存的每一頁可以映像可以映像到Cache的任意一頁。

3、組相聯映像

組相聯映像是直接映像與全相聯映像的折中方案,它將Cache分為若干組,如8組;每組若干頁,如2頁;同時將主存分為若干組,如255組;每組內的頁數與Cache的組數相同,如8頁。組相聯映像的規律是主存中的各頁與Cache的組號有固定的映像關係,但可自由映像到對應的Cache組中的任意一頁。即組間採用直接映像,而組內的頁為全相聯映像。

替換機構

當CPU訪問Cache未命中時,應從主存中讀取信息,同時寫入Cache。若Cache未滿,則直接寫入;若Cache已滿,則需要進行替換。替換機構由硬體組成,並按替換算法進行設計,其作用是指出替換的頁號。常用的替換算法有先進先出算法(FIFO)和近期最少使用算法(LRU)。

讀寫操作

1、讀操作

訪存時,將主存地址同時送主存和Cache,一則啟動對主存的讀操作,二則在Cache中按映像方式從中獲取Cache地址,並將主存標記與Cache標記比較:若相同,則訪問命中,從Cache中讀取數據。因為Cache速度比主存速度快,所以不等主存讀操作結束,即可繼續下一次訪存操作;若不相同,則訪問未命中,則從主存中讀取數據,並考慮是否按某種替換算法更新Cache某頁的內容。

2、寫操作

將數據寫入主存有兩種方法,寫回法和些直達法。

寫回法:信息暫時只寫入Cache,並用標誌加以註明,直到該頁內容需從Cache中替換出來時,才一次寫入主存。優點是操作速度快,缺點是寫回主存前,主存中沒有這些內容,與Cache不一致,易造成錯誤。

寫直達法:信息在寫入Cahce時也同時寫入主存。優點是主存與Cache始終保持一致,但速度慢。

Buffer和Cache區別

快取(cached)是把讀取過的數據保存起來,重新讀取時若命中(找到需要的數據)就不要去讀硬碟了,若沒有命中就讀硬碟。其中的數據會根據讀取頻率進行組織,把最頻繁讀取的內容放在最容易找到的位置,把不再讀的內容不斷往後排,直至從中刪除。

CACHE記憶體
緩衝(buffers)是根據磁碟的讀寫設計的,把分散的寫操作集中進行,減少磁碟碎片和硬碟的反覆尋道,從而提高系統性能。linux有一個守護進程定期清空緩衝內容(即寫如磁碟),也可以通過sync命令手動清空緩衝。舉個例子吧:我這裡有一個ext2的隨身碟,我往裡面cp一個3M的MP3,但隨身碟的燈沒有跳動,過了一會兒(或者手動輸入sync)隨身碟的燈就跳動起來了。卸載設備時會清空緩衝,所以有些時候卸載一個設備時要等上幾秒鐘。

修改/etc/sysctl.conf中的vm.swappiness右邊的數字可以在下次開機時調節swap使用策略。該數字範圍是0~100,數字越大越傾向於使用swap。默認為60,可以改一下試試。兩者都是RAM中的數據。簡單來說,buffer是即將要被寫入磁碟的,而cache是被從磁碟中讀出來的。

buffer是由各種進程分配的,被用在如輸入佇列等方面,一個簡單的例子如某個進程要求有多個欄位讀入,在所有欄位被讀入完整之前,進程把先前讀入的欄位放在buffer中保存。

cache經常被用在磁碟的I/O請求上,如果有多個進程都要訪問某個檔案,於是該檔案便被做成cache以方便下次被訪問,這樣可提供系統性能。

相關知識

通常人們所說的Cache就是指快取SRAM。 SRAM叫靜態記憶體,“靜態”指的是當我們將一筆數據寫入SRAM後,除非重新寫入新數據或關閉電源,否則寫入的數據保持不變。

CACHE主機板
由於CPU的速度比記憶體和硬碟的速度要快得多,所以在存取數據時會使CPU等待,影響計算機的速度。SRAM的存取速度比其它記憶體和硬碟都要快,所以它被用作電腦的高速快取(Cache)。

有了高速快取,可以先把數據預寫到其中,需要時直接從它讀出,這就縮短了CPU的等待時間。高速快取之所以能提高系統的速度是基於一種統計規律,主機板上的控制系統會自動統計記憶體中哪些數據會被頻繁的使用,就把這些數據存在高速快取中,CPU要訪問這些數據時,就會先到Cache中去找,從而提高整體的運行速度。一般說來,256K的高速快取能使整機速度平均提高10%左右。

主機板上通常都會提供256K到1M的快取。在CPU內部也有高速快取,如486CPU有8K的高速快取,Pentium有16K的高速快取。Pentium II有32K 一級快取,AMD K6-2中有64K的一級Cache,AMD K6-3中有64K 的一級 Cache,和256K 的二級Cache,Cyrix MII 中有64K的Cache。

為了區分它們,CPU內部的快取叫內部高速快取(Internal Cache)或一級高速快取,主機板上的快取叫外部高速快取(External Cache)或二級高速快取。不過現在的Pentium II 的CPU已經將主機板上的二級快取封裝在CPU的盒子中,AMD K6-3的CPU內部也集成了256K的二級Cache,對於這類CPU來說,主機板上提供的已是三級快取了。

相關詞條

相關搜尋

熱門詞條

聯絡我們