快取

維基百科,自由的百科全書
(已重新導向自 Cache)
前往: 導覽搜尋

高速快取英語Cache),其原始意義是指存取速度比一般隨機存取記憶體(RAM)快的一種RAM,通常它不像系統主記憶體那樣使用DRAM技術,而使用昂貴但較快速的SRAM技術。

原理[編輯]

Cache一詞來源於1967年的一篇電子工程期刊論文。其作者將法語詞「cache」賦予「safekeeping storage」的涵義,用於電腦工程領域。

CPU處理資料時,它會先到Cache中去尋找,如果資料因之前的操作已經讀取而被暫存其中,就不需要再從隨機存取記憶體(Main memory)中讀取資料——由於CPU的執行速度一般比主記憶體的讀取速度快,主記憶體儲器周期(存取主記憶體儲器所需要的時間)為數個時鐘周期。因此若要存取主記憶體的話,就必須等待數個CPU周期從而造成浪費。

提供「高速快取」的目的是為了讓資料存取的速度適應CPU的處理速度,其基於的原理是記憶體中「程式執行與資料存取的局域性行為」,即一定程式執行時間和空間內,被存取的代碼集中於一部分。為了充分發揮高速快取的作用,不僅依靠「暫存剛剛存取過的資料」,還要使用硬體實作的指令預測資料預取技術——儘可能把將要使用的資料預先從記憶體中取到高速快取裡。

CPU的高速快取曾經是用在超級電腦上的一種高階技術,不過現今電腦上使用的的AMDIntel微處理器都在晶片內部整合了大小不等的資料高速快取和指令高速快取,通稱為L1高速快取(L1 Cache即Level 1 On-die Cache,第一級片上高速緩衝存儲器);而比L1更大容量的L2高速快取曾經被放在CPU外部(主機板或者CPU介面卡上),但是現在已經成為CPU內部的標準元件;更昂貴的CPU會配備比L2高速快取還要大的L3高速快取(level 3 On-die Cache第三級高速緩衝存儲器)。

概念的擴充[編輯]

如今高速快取的概念已被擴充,不僅在CPU和主記憶體之間有Cache,而且在記憶體和硬碟之間也有Cache(磁碟快取),乃至在硬碟與網路之間也有某種意義上的Cache──稱為Internet臨時資料夾網路內容快取等。凡是位於速度相差較大的兩種硬體之間,用於協調兩者資料傳輸速度差異的結構,均可稱之為Cache。

位址映象與變換[編輯]

由於主記憶體容量遠大於CPU高速快取的容量,因此兩者之間就必須按一定的規則對應起來。位址映象就是指按某種規則把主記憶體塊裝入高速快取中。位址變換是指當按某種映象方式把主記憶體塊裝入高速快取後,每次存取CPU高速快取時,如何把主記憶體的實體位址(Physical address)或虛擬位址(Virtual address)變換成CPU高速快取的位址,從而存取其中的資料。

快取置換策略[編輯]

主記憶體容量遠大於CPU高速快取,磁碟容量遠大於主記憶體,因此無論是哪一層次的快取都面臨一個同樣的問題:當容量有限的快取的空閒空間全部用完後,又有新的內容需要添加進快取時,如何挑選並捨棄原有的部分內容,從而騰出空間放入這些新的內容。解決這個問題的演算法有幾種,如最久未使用演算法(LRU)、先進先出演算法(FIFO)、最近最少使用演算法(LFU)、非最近使用演算法(NMRU)等,這些演算法在不同層次的快取上執行時擁有不同的效率和代價,需根據具體場合選擇最合適的一種。

參見[編輯]

外部連結[編輯]