一級緩存、二級緩存、三級緩存是什麼?作用?區別?

 一級緩存、二級緩存、三級緩存是什麼?作用?區別? 
首先簡單瞭解一下一級緩存。目前所有主流處理器大都具有一級緩存和二級緩存,少數高端處理器還集成了三級緩存。其中,一級緩存可分爲一級指令緩存和一級數據緩存。一級指令緩存用於暫時存儲並向CPU遞送各類運算指令;一級數據緩存用於暫時存儲並向CPU遞送運算所需數據,這就是一級緩存的作用。

那麼,二級緩存的作用又是什麼呢?簡單地說,二級緩存就是一級緩存的緩衝器:一級緩存製造成本很高因此它的容量有限,二級緩存的作用就是存儲那些CPU處理時需要用到、一級緩存又無法存儲的數據。同樣道理,三級緩存和內存可以看作是二級緩存的緩衝器,它們的容量遞增,但單位制造成本卻遞減。需要注意的是,無論是二級緩存、三級緩存還是內存都不能存儲處理器操作的原始指令,這些指令只能存儲在CPU的一級指令緩存中,而餘下的二級緩存、三級緩存和內存僅用於存儲CPU所需數據。

根據工作原理的不同,目前主流處理器所採用的一級數據緩存又可以分爲實數據讀寫緩存和數據代碼指令追蹤緩存2種,它們分別被AMD和Intel所採用。不同的一級數據緩存設計對於二級緩存容量的需求也各不相同,下面讓我們簡單瞭解一下這兩種一級數據緩存設計的不同之處。
一、AMD一級數據緩存設計

AMD採用的一級緩存設計屬於傳統的“實數據讀寫緩存”設計。基於該架構的一級數據緩存主要用於存儲CPU最先讀取的數據;而更多的讀取數據則分別存儲在二級緩存和系統內存當中。做個簡單的假設,假如處理器需要讀取“AMD ATHLON 64 3000+ IS GOOD”這一串數據(不記空格),那麼首先要被讀取的“AMDATHL”將被存儲在一級數據緩存中,而餘下的“ON643000+ISGOOD”則被分別存儲在二級緩存和系統內存當中(如下圖所示)。


需要注意的是,以上假設只是對AMD處理器一級數據緩存的一個抽象描述,一級數據緩存和二級緩存所能存儲的數據長度完全由緩存容量的大小決定,而絕非以上假設中的幾個字節。“實數據讀寫緩存”的優點是數據讀取直接快速,但這也需要一級數據緩存具有一定的容量,增加了處理器的製造難度(一級數據緩存的單位制造成本較二級緩存高)。
二、Intel一級數據緩存設計

自P4時代開始,Intel開始採用全新的“數據代碼指令追蹤緩存”設計。基於這種架構的一級數據緩存不再存儲實際的數據,而是存儲這些數據在二級緩存中的指令代碼(即數據在二級緩存中存儲的起始地址)。假設處理器需要讀取“INTEL P4 IS GOOD”這一串數據(不記空格),那麼所有數據將被存儲在二級緩存中,而一級數據代碼指令追蹤緩存需要存儲的僅僅是上述數據的起始地址。


由於一級數據緩存不再存儲實際數據,因此“數據代碼指令追蹤緩存”設計能夠極大地降CPU對一級數據緩存容量的要求,降低處理器的生產難度。但這種設計的弊端在於數據讀取效率較“實數據讀寫緩存設計”低,而且對二級緩存容量的依賴性非常大。

在瞭解了一級緩存、二級緩存的大致作用及其分類以後,下面我們來回答以下硬件一菜鳥網友提出的問題。
從理論上講,二級緩存越大處理器的性能越好,但這並不是說二級緩存容量加倍就能夠處理器帶來成倍的性能增長。目前CPU處理的絕大部分數據的大小都在0-256KB之間,小部分數據的大小在256KB-512KB之間,只有極少數數據的大小超過512KB。所以只要處理器可用的一級、二級緩存容量達到256KB以上,那就能夠應付正常的應用;512KB容量的二級緩存已經足夠滿足絕大多數應用的需求。

這其中,對於採用“實數據讀寫緩存”設計的AMD Athlon 64、Sempron處理器而言,由於它們已經具備了64KB一級指令緩存和64KB一級數據緩存,只要處理器的二級緩存容量大於等於128KB就能夠存儲足夠的數據和指令,因此它們對二級緩存的依賴性並不大。這就是爲什麼主頻同爲1.8GHz的Socket 754 Sempron 3000+(128KB二級緩存)、Sempron 3100+(256KB二級緩存)以及Athlon 64 2800+(512KB二級緩存)在大多數評測中性能非常接近的主要原因。所以對於普通用戶而言754 Sempron 2600+是值得考慮的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章