首頁 > 硬體

CPU一級快取是什麼

2020-10-19 19:37:43

  CPU快取(Cache Memory)是位於CPU與記憶體之間的臨時記憶體,它的容量比記憶體小的多但是交換速度卻比記憶體要快得多。快取的出現主要是為了解決CPU運算速度與記憶體讀寫速度不匹配的矛盾,因為CPU運算速度要比記憶體讀寫速度快很多,這樣會使CPU花費很長時間等待資料到來或把資料寫入記憶體。

  在快取中的資料是記憶體中的一小部分,但這一小部分是短時間內CPU即將存取的,當CPU呼叫大量資料時,就可避開記憶體直接從快取中呼叫,從而加快讀取速度。由此可見,在CPU中加入快取是一種高效的解決方案,這樣整個記憶體儲器(快取+記憶體)就變成了既有快取的高速度,又有記憶體的大容量的儲存系統了。快取對CPU的效能影響很大,主要是因為CPU的資料交換順序和CPU與快取間的頻寬引起的。

  快取的工作原理是當CPU要讀取一個資料時,首先從快取中查詢,如果找到就立即讀取並送給CPU處理;如果沒有找到,就用相對慢的速度從記憶體中讀取並送給CPU處理,同時把這個資料所在的資料塊調入快取中,可以使得以後對整塊資料的讀取都從快取中進行,不必再呼叫記憶體。

  正是這樣的讀取機制使CPU讀取快取的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的資料90%都在快取中,只有大約10%需要從記憶體讀取。這大大節省了CPU直接讀取記憶體的時間,也使CPU讀取資料時基本無需等待。總的來說,CPU讀取資料的順序是先快取後記憶體。

  目前快取基本上都是採用SRAM記憶體,SRAM是英文Static RAM的縮寫,它是一種具有靜志存取功能的記憶體,不需要重新整理電路即能儲存它內部儲存的資料。不像DRAM記憶體那樣需要重新整理電路,每隔一段時間,固定要對DRAM重新整理充電一次,否則內部的資料即會消失,因此SRAM具有較高的效能,但是SRAM也有它的缺點,即它的整合度較低,相同容量的DRAM記憶體可以設計為較小的體積,但是SRAM卻需要很大的體積,這也是目前不能將快取容量做得太大的重要原因。它的特點歸納如下:優點是節能、速度快、不必配合記憶體重新整理電路、可提高整體的工作效率,缺點是整合度低、相同的容量體積較大、而且價格較高,只能少量用於關鍵性系統以提高效率。

  按照資料讀取順序和與CPU結合的緊密程度,CPU快取可以分為一級快取,二級快取,部分高階CPU還具有三級快取,每一級快取中所儲存的全部資料都是下一級快取的一部分,這三種快取的技術難度和製造成本是相對遞減的,所以其容量也是相對遞增的。當CPU要讀取一個資料時,首先從一級快取中查詢,如果沒有找到再從二級快取中查詢,如果還是沒有就從三級快取或記憶體中查詢。

  一般來說,每級快取的命中率大概都在80%左右,也就是說全部資料量的80%都可以在一級快取中找到,只剩下20%的總資料量才需要從二級快取、三級快取或記憶體中讀取,由此可見一級快取是整個CPU快取架構中最為重要的部分。

  一級快取(Level 1 Cache)簡稱L1 Cache,位於CPU核心的旁邊,是與CPU結合最為緊密的CPU快取,也是歷史上最早出現的CPU快取。由於一級快取的技術難度和製造成本最高,提高容量所帶來的技術難度增加和成本增加非常大,所帶來的效能提升卻不明顯,價效比很低,而且現有的一級快取的命中率已經很高,所以一級快取是所有快取中容量最小的,比二級快取要小得多。

  一般來說,一級快取可以分為一級資料快取(Data Cache,D-Cache)和一級指令快取(Instruction Cache,I-Cache)。二者分別用來存放資料以及對執行這些資料的指令進行即時解碼,而且兩者可以同時被CPU存取,減少了爭用Cache所造成的衝突,提高了處理器效能。目前大多數CPU的一級資料快取和一級指令快取具有相同的容量,例如AMD的Athlon XP就具有64KB的一級資料快取和64KB的一級指令快取,其一級快取就以64KB+64KB來表示,其餘的CPU的一級快取表示方法以此類推。

  Intel的採用NetBurst架構的CPU(最典型的就是Pentium 4)的一級快取有點特殊,使用了新增加的一種一級追蹤快取(Execution Trace Cache,T-Cache或ETC)來替代一級指令快取,容量為12KμOps,表示能儲存12K條即12000條解碼後的微指令。

  一級追蹤快取與一級指令快取的執行機制是不相同的,一級指令快取只是對指令作即時的解碼而並不會儲存這些指令,而一級追蹤快取同樣會將一些指令作解碼,這些指令稱為微指令(micro-ops),而這些微指令能儲存在一級追蹤快取之內,無需每一次都作出解碼的程式,因此一級追蹤快取能有效地增加在高工作頻率下對指令的解碼能力,而μOps就是micro-ops,也就是微型操作的意思。它以很高的速度將μops提供給處理器核心。

  Intel NetBurst微型架構使用執行跟蹤快取,將解碼器從執行迴圈中分離出來。這個跟蹤快取以很高的頻寬將uops提供給核心,從本質上適於充分利用軟體中的指令級並行機制。Intel並沒有公佈一級追蹤快取的實際容量,只知道一級追蹤快取能儲存12000條微指令(micro-ops)。所以,不能簡單地用微指令的數目來比較指令快取的大小。

  實際上,單核心的NetBurst架構CPU使用8Kμops的快取已經基本上夠用了,多出的4kμops可以大大提高快取命中率。而如果要使用超執行緒技術的話,12KμOps就會有些不夠用,這就是為什麼有時候Intel處理器在使用超執行緒技術時會導致效能下降的重要原因。

  例如Northwood核心的一級快取為8KB+12KμOps,就表示其一級資料快取為8KB,一級追蹤快取為12KμOps;而Prescott核心的一級快取為16KB+12KμOps,就表示其一級資料快取為16KB,一級追蹤快取為12KμOps。在這裡12KμOps絕對不等於12KB,單位都不同,一個是μOps,一個是Byte(位元組),而且二者的執行機制完全不同。所以那些把Intel的CPU一級快取簡單相加,例如把Northwood核心說成是20KB一級快取,把Prescott核心說成是28KB一級快取,並且據此認為Intel處理器的一級快取容量遠遠低於AMD處理器128KB的一級快取容量的看法是完全錯誤的,二者不具有可比性。

  在架構有一定區別的CPU對比中,很多快取已經難以找到對應的東西,即使類似名稱的快取在設計思路和功能定義上也有區別了,此時不能用簡單的算術加法來進行對比;而在架構極為近似的CPU對比中,分別對比各種功能快取大小才有一定的意義。


IT145.com E-mail:sddin#qq.com