基本介紹
- 中文名:先進傳輸快取
- 外文名:cache
簡介,原理,概念的擴充,地址鏡像與變換,快取置換策略,參見,
簡介
原理
Cache一詞來源於1967年的一篇電子工程期刊論文。其作者將法語詞“cache”賦予“safekeeping storage”的涵義,用於計算機工程領域。PC-AT/XT和80286時代,沒有Cache,CPU和記憶體都很慢,CPU直接訪問記憶體。80386的晶片組增加了對可選的Cache的支持,高級主機板帶有64KB,甚至高端大氣上檔次的128KB Write-Through Cache。80486CPU裡面加入了8KB的L1 Unified Cache,當時也叫做內部Cache,不分代碼和數據,都存在一起;晶片組中的Cache,變成了L2,也被叫做外部Cache,從128KB到256KB不等;增加了Write-back的Cache屬性。PentiumCPU的L1 Cache分為Code和data,各自8KB;L2還被放在主機板上。Pentium Pro的L2被放入到CPU的Package上。Pentium 4開始,L2 Cache被放入了CPU的Die中。從Intel CoreCPU開始,L2 Cache為多核共享。
當CPU處理數據時,它會先到Cache中去尋找,如果數據因之前的操作已經讀取而被暫存其中,就不需要再從隨機存取存儲器(Main memory)中讀取數據——由於CPU的運行速度一般比主記憶體的讀取速度快,主存儲器周期(訪問主存儲器所需要的時間)為數個時鐘周期。因此若要訪問主記憶體的話,就必須等待數個CPU周期從而造成浪費。
提供“快取”的目的是為了讓數據訪問的速度適應CPU的處理速度,其基於的原理是記憶體中“程式執行與數據訪問的局域性行為”,即一定程式執行時間和空間內,被訪問的代碼集中於一部分。為了充分發揮快取的作用,不僅依靠“暫存剛剛訪問過的數據”,還要使用硬體實現的指令預測與數據預取技術——儘可能把將要使用的數據預先從記憶體中取到快取里。
CPU的快取曾經是用在超級計算機上的一種高級技術,不過現今計算機上使用的的AMD或Intel微處理器都在晶片內部集成了大小不等的數據快取和指令快取,通稱為L1快取(L1 Cache即Level 1 On-die Cache,第一級片上高速緩衝存儲器);而比L1更大容量的L2快取曾經被放在CPU外部(主機板或者CPU接口卡上),但是現在已經成為CPU內部的標準組件;更昂貴的CPU會配備比L2快取還要大的L3快取(level 3 On-die Cache第三級高速緩衝存儲器)。
概念的擴充
地址鏡像與變換
- 主條目:CPU快取 §組相聯
由於主存容量遠大於CPU快取的容量,因此兩者之間就必須按一定的規則對應起來。地址鏡像就是指按某種規則把主存塊裝入快取中。地址變換是指當按某種鏡像方式把主存塊裝入快取後,每次訪問CPU快取時,如何把主存的物理地址(Physical address)或虛擬地址(Virtual address)變換成CPU快取的地址,從而訪問其中的數據。
快取置換策略
主條目:CPU快取 §置換策略、分頁和快取檔案置換機制
主存容量遠大於CPU快取,磁碟容量遠大於主存,因此無論是哪一層次的快取都面臨一個同樣的問題:當容量有限的快取的空閒空間全部用完後,又有新的內容需要添加進快取時,如何挑選並捨棄原有的部分內容,從而騰出空間放入這些新的內容。解決這個問題的算法有幾種,如最久未使用算法(LRU)、先進先出算法(FIFO)、最近最少使用算法(LFU)、非最近使用算法(NMRU)等,這些算法在不同層次的快取上執行時擁有不同的效率和代價,需根據具體場合選擇最合適的一種。
參見
- 快取置換