二級快取容量

所謂處理器快取,通常指的是二級高速快取,或外部高速快取。即高速緩衝存儲器,是位於CPU和存儲器DRAM(Dynamic RAM)之間的規模較小的但速度很高的存儲器,通常由SRAM(靜態隨機存儲器)組成。

基本介紹

  • 中文名:二級快取容量
  • 稱呼:處理器快取
  • 位於:CPU和主存儲器DRAM之間
  • 設計思想:用少量的SRAM
基本介,快取定義,設計思想,工作原理,快取發展,作用,快取算法,快取容量,重要作用,性能影響,邏輯差異,分類,AMD,Intel,重要意義,工作原則,代碼設計,製作工藝,二級快取,快取與命中,性能,主頻,技術套用,容量影響,CPU性能,伺服器,

基本介

快取定義

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

設計思想

處理器快取的基本思想是用少量的SRAM作為CPU與DRAM存儲系統之間的緩衝區,即Cache系統。80486以及更高檔微處理器的一個顯著特點是處理器晶片內集成了SRAM作為Cache,由於這些Cache裝在晶片內,因此稱為片內Cache。486晶片內Cache的容量通常為8K。高檔晶片如Pentium為16KB,Power PC可達32KB。Pentium微處理器進一步改進片內Cache,採用數據和雙通道Cache技術,相對而言,片內Cache的容量不大,但是非常靈活、方便,極大地提高了微處理器的性能。片內Cache也稱為一級Cache。由於486,586等高檔處理器的時鐘頻率很高,一旦出現一級Cache未命中的情況,性能將明顯惡化。在這種情況下採用的辦法是在處理器晶片之外再加Cache,稱為二級Cache。二級Cache實際上是CPU和主存之間的真正緩衝。由於系統板上的回響時間遠低於CPU的速度,如果沒有二級Cache就不可能達到486,586等高檔處理器的理想速度。二級Cache的容量通常應比一級Cache大一個數量級以上。在系統設定中,常要求用戶確定二級Cache是否安裝及尺寸大小等。二級Cache的大小一般為128KB、256KB或512KB。在486以上檔次的微機中,普遍採用256KB或512KB同步Cache。所謂同步是指Cache和CPU採用了相同的時鐘周期,以相同的速度同步工作。相對於異步Cache,性能可提高30%以上。

工作原理

快取的工作原理是當CPU要讀取一個數據時,首先從快取中查找,如果找到就立即讀取並送給CPU處理;如果沒有找到,就用相對慢的速度從記憶體中讀取並送給CPU處理,同時把這個數據所在的數據塊調入快取中,可以使得以後對整塊數據的讀取都從快取中進行,不必再調用記憶體。
正是這樣的讀取機制使CPU讀取快取的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在快取中,只有大約10%需要從記憶體讀取。這大大節省了CPU直接讀取記憶體的時間,也使CPU讀取數據時基本無需等待。總的來說,CPU讀取數據的順序是先快取後記憶體。

快取發展

最早先的CPU快取是個整體的,而且容量很低,英特爾公司從Pentium時代開始把快取進行了分類。當時集成在CPU核心中的快取已不足以滿足CPU的需求,而製造工藝上的限制又不能大幅度提高快取的容量。因此出現了集成在與CPU同一塊電路板上或主機板上的快取,此時就把 CPU核心集成的快取稱為一級快取,而外部的稱為二級快取。一級快取中還分數據快取(Data Cache,D-Cache)和指令快取(Instruction Cache,I-Cache)。二者分別用來存放數據和執行這些數據的指令,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的衝突,提高了處理器效能。英特爾公司在推出Pentium 4處理器時,用新增的一種一級追蹤快取替代指令快取,容量為12KμOps,表示能存儲12K條微指令
隨著CPU製造工藝的發展,二級快取也能輕易的集成在CPU核心中,容量也在逐年提升。再用集成在CPU內部與否來定義一、二級快取,已不確切。而且隨著二級快取被集成入CPU核心中,以往二級快取與CPU大差距分頻的情況也被改變,此時其以相同於主頻的速度工作,可以為CPU提供更高的傳輸速度。

作用

二級快取是CPU性能表現的關鍵之一,在CPU核心不變化的情況下,增加二級快取容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二級快取上有差異,由此可見二級快取對於CPU的重要性。
CPU在快取中找到有用的數據被稱為命中,當快取中沒有CPU所需的數據時(這時稱為未命中),CPU才訪問記憶體。從理論上講,在一顆擁有二級快取的CPU中,讀取一級快取的命中率為80%。也就是說CPU一級快取中找到的有用數據占數據總量的80%,剩下的20%從二級快取中讀取。由於不能準確預測將要執行的數據,讀取二級快取的命中率也在80%左右(從二級快取讀到有用的數據占總數據的16%)。那么還有的數據就不得不從記憶體調用,但這已經是一個相當小的比例了。較高端的CPU中,還會帶有三級快取,它是為讀取二級快取後未命中的數據設計的—種快取,在擁有三級快取的CPU中,只有約5%的數據需要從記憶體中調用,這進一步提高了CPU的效率。

快取算法

為了保證CPU訪問時有較高的命中率,快取中的內容應該按一定的算法替換。一種較常用的算法是“最近最少使用算法”(LRU算法),它是將最近的一段時間內最少被訪問過的行淘汰出局。因此需要為每行設定一個計數器,LRU算法是把命中行的計數器清零,其他各行計數器加1。當需要替換時淘汰行計數器計數值最大的數據行出局。這是一種高效、科學的算法,其計數器清零過程可以把一些頻繁調用後再不需要的數據淘汰出快取,提高快取的利用率。

快取容量

CPU儘可能地讓用過的指令放在手邊,當CPU需要指令的時候,它首先在它的一級快取中查找,一級快取就是存放用過的指令的地方。在PIII或賽揚II中,一級快取的大小為32K,與CPU同速。如果CPU在一級快取中找不到它所需的指令,就發生通常稱為快取遺漏(cache miss)的現象。 當CPU在一級快取中發現快取遺漏的時候,就會轉到二級快取中查找所需的指令。PIII的二級快取大小為256K,與CPU核心速度相同,賽揚II中的二級快取大小為128K。當二級快取中出現快取遺漏時,計算機就轉向系統記憶體。系統記憶體的頻率一般為100MHz,PC133的速度是133MHz。 在果在這些地方都找不到所需指令,計算機就只好向硬碟提出讀取請求了。如果所需指令連硬碟上都找不到,就只好說明你根本沒有作業系統,也就是說系統根本不能運行了。在這裡,硬碟是計算機中最慢的部分了。更多更快的記憶體,就是為了把所需指令全都放在一、二級快取和系統記憶體中。這樣,當計算機向硬碟請求指令的時候,一次可以獲得許多,性能大大提高。這同時也避免了反覆讀取硬碟,造成硬碟負荷沉重。

重要作用

性能影響

現代桌面級PC的CPU二級快取容量大多數在64KB到2MB之間。因為CPU二級快取容量對CPU性能有不小的影響,所以低端CPU和中高端CPU在物理結構上的差異主要就是二級快取容量的大小。那么二級快取容量為什麼如此重要?它對CPU性能有什麼樣的影響呢?
CPU二級快取作為一級快取的“後備倉庫”,用於為一級快取存儲更多的數據,減少CPU直接訪問記憶體 的次數。理論上,CPU訪問並調用快取的數據所占的比重越大,則CPU訪問並調用記憶體的數據所占的比重就越小,那么因訪問記憶體而耽誤的時間 就越少。所以快取的容量越大,CPU的實際效率也就越高,性能就越強。

邏輯差異

實際上,Intel和AMD處理器在一級快取邏輯結構設計上有所不同,所以二級快取對CPU性能的影響也不盡相同。因為CPU讀取的 數據(包括指令)中有80%的數據來自一級快取,所以一級快取邏輯結構決定了CPU二級快取容量對CPU性能的影響。Intel的Pentium 4及Celeron系列處理器的一級數據快取被稱為“數據代碼指令追蹤(讀寫)快取”;AMD的Athlon 64/Athlon XP/Sempron/Duron系列處理器 的一級數據快取叫作“實數據讀寫快取”。
但是在“數據代碼指令追蹤快取”架構的CPU中,一級數據快取並不存儲這些最先用到的數據(“1、2……449、450”),而是將這些數據存儲到二級快取中,一級數據快取僅僅存儲這些數據在二級快取中的起止地址(又稱為:指令代碼)。例如,數據“1、2……449、450” 順序存儲在二級快取中,數據“1”所在地址為“00001F”,數據“450” 所在地址為“00451F”,實際上一級數據快取只需要存儲“00001F”和“00451F”這兩個地址就可以了,而不需要存儲大量的數據。

分類

AMD

Athlon 64 X2 CPU的核心主要有Manchester和Toledo兩種,他們的二級快取都是CPU內部兩個核心具有互相獨立的二級快取,其中,Manchester核心為每核心512KB,而Toledo核心為每核心1MB。處理器內部的兩個核心之間的快取數據同步是依靠CPU內置的System Request Interface(系統請求接口,SRI)控制,傳輸在CPU內部即可實現。這樣一來,不但CPU資源占用很小,而且不必占用記憶體匯流排資源,數據延遲也比Intel的Smithfield核心和Presler核心大為減少,協作效率明顯勝過這兩種核心。不過,由於這種方式仍然是兩個核心的快取相互獨立,從架構上來看也明顯不如以Yonah核心為代表的Intel的共享快取技術Smart Cache。

Intel

Intel的雙核心CPU主要有Pentium D、Pentium EE、Core Duo三種,其中Pentium D、Pentium EE的二級快取方式完全相同。Pentium D和Pentium EE的二級快取都是CPU內部兩個核心具有互相獨立的二級快取,其中,8xx系列的Smithfield核心CPU為每核心1MB,而9xx系列的Presler核心CPU為每核心2MB。這種CPU內部的兩個核心之間的快取數據同步是依靠位於主機板北橋晶片上的仲裁單元通過前端匯流排在兩個核心之間傳輸來實現的,所以其數據延遲問題比較嚴重,性能並不盡如人意。
Core Duo使用的核心為Yonah,它的二級快取則是兩個核心共享2MB的二級快取,共享式的二級快取配合Intel的“Smart cache”共享快取技術,實現了真正意義上的快取數據同步,大幅度降低了數據延遲,減少了對前端匯流排的占用,性能表現不錯,是目前雙核心處理器上最先進的二級快取架構。今後Intel的雙核心處理器的二級快取都會採用這種兩個核心共享二級快取的“Smart cache”共享快取技術。

重要意義

工作原則

快取工作的原則,就是“引用的局部性”,這可以分為時間局部性和空間局部性。空間局部性是指CPU在某一時刻需要某個數據,那么很可能下一步就需要其附近的數據;時間局部性是指當某個數據被訪問過一次之後,過不了多久時間就會被再一次訪問。對於應用程式而言,不管是指令流還是數據流都會出現引用的局部性現象。
舉個簡單的例子,比如在播放DVD影片的時候,DVD數據由一系列位元組組成,這個時候CPU會依次從頭處理到尾地調用DVD數據,如果CPU這次讀取DVD數據為1分30秒,那么下次讀取的時候就會從1分31秒開始,因此這種情況下有序排列的數據都是依次被讀入CPU進行處理。從數據上來看,對於Word一類的應用程式通常都有著較好的空間局部性。用戶在使用中不會一次打開7、8個文檔,不諱在其中某一個文檔中打上幾個詞就換一個。大多數用戶都是打開一兩個文檔,然後就是長時間對它們進行處理而不會做其他事情。這樣在記憶體中的數據都會集中在一個區域中,也就可以被CPU集中處理。

代碼設計

從程式代碼上來考慮,設計者通常也會儘量避免出現程式的跳躍和分支,讓CPU可以不中斷地處理大塊連續數據。遊戲、模擬和多媒體處理程式通常都是這方面的代表,以小段代碼連續處理大塊數據。不過在辦公運用程式中,情況就不一樣了。改動字型,改變格式,保存文檔,都需要程式代碼不同部分起作用,而用到的指令通常都不會在一個連續的區域中。於是CPU就不得不在記憶體中不斷跳來跳去尋找需要的代碼。這也就意味著對於辦公程式而言,需要較大的快取來讀入大多數經常使用的代碼,把它們放在一個連續的區域中。如果快取不夠,就需要快取中的數據,而如果快取足夠大的話,所有的代碼都可以放入,也就可以獲得最高的效率。同理,高端的數據套用以及遊戲套用則需要更高容量的快取。

製作工藝

二級快取很重要,簡單的理解就是:二級快取(即L2)的大小是衡量CPU性能的一個重要指標。L2太小,即使處理器速度很快,那也無法把數據即時傳入進行處理,將會制約處理器的整體性能。 CPU產品中,一級快取的容量基本在4KB到64KB之間,二級快取的容量則分為128KB、256KB、512KB、1MB、2MB等。一級快取容量各產品之間相差不大,而二級快取容量則是提高CPU性能的關鍵。二級快取容量的提升是由CPU製造工藝所決定的,容量增大必然導致CPU內部電晶體數的增加,要在有限的CPU面積上集成更大的快取,對製造工藝的要求也就越高。

二級快取

快取與命中

總所周知,處理器在快取中找到需要的數據稱為“命中”,只有當快取中沒有處理器所需的數據時(此時稱為未命中),處理器才會對記憶體進行訪問。鑒於處理器大都具有一級快取和二級快取。打個比方,比如在一顆擁有二級快取的處理器中,處理器讀取一級快取的命中率為80%,這說明處理器在一級快取中能夠找到的所需要的數據占所需數據總量的80%,另外剩下的20%處理器將會從二級快取中去尋找,剩下的這20%數據是不可能從二級快取中全部找到的,也會出現“未命中”,所以我們在此假定二級快取的“命中率”也同樣為80%,找到剩餘20%所需數據中的80%,那么還有總數據量的4%沒有被命中,此時處理器就不得不從記憶體中去調用這剩下的4%。

性能

介於從處理器內部到一級快取、二級快取最後到記憶體的所需時間會越來越慢,所以快取的命中率和主頻在理論上也會影響到快取的性能表現,但實際使用中,純理論的情況會出現嗎?下面就通過測試來檢驗一下。
在《Quake4》的測試中,主頻共同提升到3.2G之後,512KB與1MB的性能差距從原有的23%下降到了20%。2MB與4MB的性能差距則有微弱的提升,從原有的8%提高到了9%。512KB與6MB的性能差距則沒有變化,主頻從2.66G提高到3.2G之後,兩者的性能差距依舊保持在相同的59%上。
在《半條命2》的測試中,512KB與1MB的性能差距從原有的23%提高到了25%。2MB與4MB的性能差距則有提升,從原有的25%提高到了28%。512KB與6MB的性能差距提升相對明顯,性能差距從2.66G主頻下的102%提高到了3.2G下的120%,有18%的提高。
在《英雄連》的測試中,提升頻率之後的512KB二級快取和1MB二級快取的性能差距為40%,略高於在2.66G主頻下的37%。而2MB與4MB的性能差距則從原有的14%提高到了16%。512KB與6MB的性能差距從原有的123%提高到了131%,可見在《英雄連》這種對處理器非常敏感的遊戲中,主頻越高,越能更好的發揮出大二級快取的優勢。
通過上面的測試我們可以大致了解到,隨著主頻的提高,在大多數情況下,不同容量的二級快取在性能上確實會有更大的性能差距。但是與主頻的提升並不成正比,在原有的基數比例下,當主頻同步提升20%的情況下,遊戲中大致會出現8%左右的快取性能增長,最高時也僅僅達到18%(《半條命2》中)。

主頻

一部分人都會有主頻越高,快取“命中”率越大的認識,因為主頻的提高,自然會提高高速快取與主快取的存取時間,也有的會拿{Cache“命中”率=(平均存取時間-主存存取時間)/(高速快取存取時間-主存存取時間)}這個公式來換算,但是這樣的計算結果顯然是沒有任何實際意義。因為當今快取的“命中”率中都會採取極為高效、科學的算法來提高快取的效率。在這種學術問題上永遠都會存在爭議,在這個問題上也沒有必要較真兒,作為消費者和玩家只需要知道,主頻的提高確實會提高快取性能就可以了。

技術套用

新的45nm工藝的使得Intel公司的工程師能夠在處理器核心內部放入更多的電子管。在此之前65nm雙核心Conroe E4XXX處理器共享二級快取的容量為2M,而新款45nmWolfdale E7XXX處理器卻可以擁有3M的二級快取,45nm E8XXX集成了6M的二級快取。 45nm處理器除了二級快取容量相比上代65nm產品高出50%以外,快取的相聯度也有大幅度提升,擁有3MBL2快取的Core 2 Duo E7000系列採用12-way,相對於採用8-way設計的E4000增加了一級;擁有6MB L2 cache的E8000則採用24-way相聯度設計,這就相當於在容量提升50%的同時位寬也同比提升。

容量影響

CPU性能

假設有一個運算任務,要從“1”一直遞加到“999999”。在傳統的“實數據讀寫快取”架構下,這一系列數據中最先用到的數據(如“1、2……449、450”)將存儲在CPU一級數據快取中,更多的數據(如“451、452……899999、900000”)存儲在CPU二級快取中,其餘的數據(如“900001、999002……999998、999999”)暫存在記憶體中,CPU將按照一級數據快取、二級快取和記憶體的順序讀取這些數據。
一級快取的存儲方式
但是由於其一級數據快取不存儲數據,數據存儲在二級快取中,因此對二級快取容量的依賴非常大,所以CPU需要更大的二級快取容量才能發揮出應有的性能。在實際套用中,CPU處理的數據中大多數都是0KB~128KB大小的數據,128KB~256KB的數據約有10%,256KB~512KB的數據有5%,512KB~1MB的數據僅有3%左右。所以對於這種CPU來說,二級快取容量從0KB增加到256KB對CPU性能的提高几乎是直線性的;增加到512KB對CPU性能的提高稍微小一些;從512KB增加到1MB,普通用戶就很難體會到CPU性能有提高了。正因為如此,大家能感受到Pentium 4 C(512KB二級快取)與Celeron(128KB二級快取)的性能差異,卻很難感受到Pentium 4C(512KB二級快取)與Pentium 4 E(1MB二級快取)的性能差異了。
例如,同為2.8GHz主頻的Celeron D(256KB二級快取)和Pentium 4 E(1MB二級快取)運算104萬位的耗時分別為56秒和48秒 ,除去外頻(前者為133MHz,後者為200MHz)的差異和超執行緒技術的影響,兩者的性能差距只有10%左右,對於普通用戶而言這樣的性能差距 是微不足道的;只有對CPU運算性能要求“苛刻”的玩家來說更大的二級快取容量才是必須的。
相對的,由於AMD的Athlon 64/Athlon XP/Sempron/Duron系列產品的一級數據快取直接存儲數據,而且128KB的容量在大多數情況下就 可以承擔CPU所急需的數據,所以其二級快取對CPU性能的影響並沒有那么大。這也就解釋了為什麼主頻外頻相同的Athlon XP(256KB或512KB二級快取)和Duron(64KB二級快取)雖然二級快取容量差異巨大,但實際性能差距不大的原因。而且Athlon 64/Sempron 系列CPU在記憶體控制器、流水線長度、頻率、匯流排架構和擴展指令集等諸多方面與以前的產品都有差異,因此在性能上受二級快取容量的影響就 更小了。綜上所述,在CPU性能方面,並非只從二級快取容量上作對比就可以得到準確的答案,實際上還要考慮到快取的總體設計結構、一級數 據快取容量等因素。雖然從總體上來講,二級快取容量越大越好,但是並不是二級快取容量提高一倍就能使CPU性能提升一倍。因此對於一般家 庭用戶來說,電腦主要是用來上網、欣賞音樂和電影以及文字處理,二級快取為256KB的Celeron D或Sempron已經足夠了。只有對3D遊戲、辦公軟體和多媒體編輯性能要求較高的用戶才需要更大二級快取的CPU。

伺服器

所謂處理器快取,通常指的是二級高速快取,或外部高速快取。即高速緩衝存儲器,是位於CPU和主存儲器DRAM(Dynamic RAM)之間的規模較小的但速度很高的存儲器,通常由SRAM(靜態隨機存儲器)組成。用來存放那些被CPU頻繁使用的數據,以便使CPU不必依賴於速度較慢的DRAM(動態隨機存儲器)。L2高速快取一直都屬於速度極快而價格也相當昂貴的一類記憶體,稱為SRAM(靜態RAM),SRAM(Static RAM)是靜態存儲器的英文縮寫。由於SRAM採用了與製作CPU相同的半導體工藝,因此與動態存儲器DRAM比較,SRAM的存取速度快,但體積較大,價格很高。
PC及其伺服器系統的發展趨勢之一是CPU主頻越做越高,系統架構越做越先進,而主存DRAM的結構和存取時間改進較慢。因此,快取(Cache)技術愈顯重要,在PC系統中Cache越做越大。廣大用戶已把Cache做為評價和選購PC系統的一個重要指標。

熱門詞條

聯絡我們