CPU需要記憶體做資料暫存,但CPU實在太快了,在記憶體裡運算資料還是嫌太慢了,所以現在CPU都直接在晶片裡內裝記憶體,也就是快取機制,由於快取記憶體根本就在CPU裡面,時脈和CPU一致,速度飛快。一般是64KB的「L1資料快取」和64KB的「L1指令快取」,還有1MB到4MB不等的「L2資料快取」。
電腦很多地方都有「快取」的設計,它的意義很簡單,就是高速裝置和慢速裝置中間的緩衝區。以CPU為例,當你執行一個軟體,比如Word,資料就先從硬碟載到記憶體,再從記憶體讀到CPU快取裡,CPU是從快取裡執行,這樣遇到需要重複使用的資料時,就能從快取裡讀,不必再繞遠路去翻記憶體。而L1和L2就是第一、第二層快取,因為.....該死的!CPU實在太快,必須要有非常非常快的快取做為它的暫存區,這就是L1,可是這種超高速的快取製作困難,成本極高,量不能太大,通常只有64KB或128KB,暫存最近執行的資料。而第二層的L2就比較大,1MB、2MB、4MB都有人做,放一些較久之前執行的資料,再更久一點的就到記憶體去,而不太常用的才回到硬碟。
而CPU找資料也是從L1、L2、記憶體、硬碟依序從最近(最快,容量最小,最貴),到最遠(最慢、容量最大,最便宜)找下去,而儲存資料時,比如存檔Word文件,也是這樣一步一步回到硬碟去。一些伺服器用的CPU還會有更大的L3快取做第三層緩衝,未來製程進步,也許一般消費端CPU也會有L3。快取是愈大愈好,因為CPU內部的運算單元執行速度超快,對一點點的延遲都很敏感,最好一切都能在快取內執行,需要載入新資料時,不得已才從記憶體裡讀。所以快取大小是評斷CPU效能的依據,通常性能愈強的CPU,也會搭配更大的快取。
但要注意,不同廠商的快取大小不能混為一談,因為所用的架構不同,比如Intel CPU的快取通常是AMD CPU的兩倍或更大,這是有特殊原因的。
CPU存取資料的順序如上圖所示,由最快最近的地方找起,如果沒抓到想要的資料再一層層往下找,因此愈上層的部分,影響效能就愈明顯。寫入資料時也是一層層往下寫,除了硬碟可以永久儲存之外,其他都是一斷電,資料就消失,所以如果你在編輯一個Word檔,在還沒有存檔之前,只有CPU的快取和記憶體裡有資料,一跳電,就完了。
快取對CPU有多重要?有圖有真相,這是一張K10 CPU晶圓的顯微照相圖,周圍一塊是L3快取、中間是L2快取、裡面還有L1快取。事實上,現在CPU電晶體將近1/2都是快取。
.....