快取記憶體

快取記憶體cache, /kæʃ/[2][3][4],中國大陸譯高速緩存[1],香港譯緩衝記憶體,中國大陸又稱高速緩衝存儲器[5][6][7]緩存[7]),原始意義是指存取速度比一般隨機存取記憶體(RAM)快的一種RAM,通常它不像系統主記憶體那樣使用DRAM技術,而使用昂貴但較快速的SRAM技術。

原理

Cache一詞來源於1967年的一篇電子工程期刊論文。其作者將法語詞「cache」賦予「safekeeping storage」的涵義,用於電腦工程領域。PC-AT/XT和80286時代沒有Cache,CPU和內存都很慢,CPU直接訪問內存。80386芯片組增加了對可選的Cache的支持,高級主板帶有64KB,甚至高端的128KB Write-Through Cache。80486 CPU裡面加入了8KB的L1 Unified Cache,當時也叫做內部Cache,不分代碼和數據,都存在一起;芯片組中的Cache,變成了L2,也被叫做外部Cache,從128KB到256KB不等;增加了Write-back的Cache屬性。Pentium CPU的L1 Cache分為Code和data,各自8KB;L2還被放在主板上。Pentium Pro的L2被放入到CPU的Package上。Pentium 3開始,L2 Cache被放入了CPU的Die中。從Intel Core CPU開始,L2 Cache為多核共享。

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

參見

參考文獻

  1. ^ 高速缓存. 術語在線. 全國科學技術名詞審定委員會.  (簡體中文)
  2. ^ cache noun. Oxford Learner's Dictionaries. Oxford University Press. [2015-01-28]. (原始內容存檔於2021-03-18). 
  3. ^ cache definition, meaning. Cambridge Dictionaries Online. Cambridge University Press. [2015-01-28]. (原始內容存檔於2015-07-12). 
  4. ^ Cache. Merriam-Webster Online Dictionary. Merriam-Webster, Incorporated. [2015-01-28]. (原始內容存檔於2021-03-18). 
  5. ^ 高速缓冲存储器. 術語在線. 全國科學技術名詞審定委員會.  (簡體中文)
  6. ^ 陳禹. 信息系统管理工程师教程. 清華大學出版社. : 18 [2020-03-09]. ISBN 7-302-12261-X. (原始內容存檔於2019-05-02) (中文(簡體)). 
  7. ^ 7.0 7.1 教育部教育考試院.全國計算機等級考試二級教程:公共基礎知識 [M].北京:高等教育出版社, 2022 (2023-05): 8-9.

外部連結