根據(jù)維基百科,高速緩存(英語:cache)簡(jiǎn)稱緩存,原始意義是指訪問速度比一般隨機(jī)存取存儲(chǔ)器(RAM)快的一種RAM,通常它不像系統(tǒng)主存那樣使用DRAM技術(shù),而使用昂貴但較快速的SRAM技術(shù)。
當(dāng)CPU處理數(shù)據(jù)時(shí),它會(huì)先到Cache中去尋找,如果數(shù)據(jù)因之前的操作已經(jīng)讀取而被暫存其中,就不需要再?gòu)碾S機(jī)存取存儲(chǔ)器(Main memory)中讀取數(shù)據(jù)——由于CPU的運(yùn)行速度一般比主內(nèi)存的讀取速度快,主存儲(chǔ)器周期(訪問主存儲(chǔ)器所需要的時(shí)間)為數(shù)個(gè)時(shí)鐘周期。因此若要訪問主內(nèi)存的話,就必須等待數(shù)個(gè)CPU周期從而造成浪費(fèi)。
早在PC-AT/XT和80286時(shí)代,并沒有Cache,CPU和內(nèi)存都很慢,CPU直接訪問內(nèi)存。但到了80386的芯片組增加了對(duì)可選的Cache的支持,高級(jí)主板帶有64KB,甚至高端的128KB Write-Through Cache。
到了80486 CPU里面,則加入了8KB的L1 Unified Cache,當(dāng)時(shí)也叫做內(nèi)部Cache,不分代碼和數(shù)據(jù),都存在一起;芯片組中的Cache,變成了L2,也被叫做外部Cache,從128KB到256KB不等;增加了Write-back的Cache屬性。Pentium CPU的L1 Cache分為Code和data,各自8KB;L2還被放在主板上。Pentium Pro的L2被放入到CPU的Package上。Pentium 3開始,L2 Cache被放入了CPU的Die中。從Intel Core CPU開始,L2 Cache為多核共享。
CPU的緩存曾經(jīng)是用在超級(jí)計(jì)算機(jī)上的一種高級(jí)技術(shù),不過現(xiàn)今電腦上使用的的AMD或Intel微處理器都在芯片內(nèi)部集成了大小不等的數(shù)據(jù)緩存和指令緩存,通稱為L(zhǎng)1緩存(L1 Cache即Level 1 On-die Cache,第一級(jí)片上高速緩沖存儲(chǔ)器);而比L1更大容量的L2緩存曾經(jīng)被放在CPU外部(主板或者CPU接口卡上),但是現(xiàn)在已經(jīng)成為CPU內(nèi)部的標(biāo)準(zhǔn)組件;更昂貴的CPU會(huì)配備比L2緩存還要大的L3緩存(level 3 On-die Cache第三級(jí)高速緩沖存儲(chǔ)器)。
但直到現(xiàn)在,主流芯片還是止步于L3。
緩存的演進(jìn)
據(jù)Quora博主,高級(jí)架構(gòu)師Jerason Banes所說,之所以L4沒被采用,這與CPU架構(gòu)的發(fā)展有著莫大的關(guān)系。
他表示,如果我們?nèi)绻麑r(shí)鐘回滾到 6502 CPU,您會(huì)發(fā)現(xiàn)這是一個(gè)非常簡(jiǎn)單的設(shè)計(jì),在實(shí)際使用中也很精確,這主要是因?yàn)?6502 使用了馮·諾依曼架構(gòu)。這是一個(gè)非常簡(jiǎn)單的結(jié)構(gòu),內(nèi)存、CPU 和 I/O 都根據(jù)一個(gè)主時(shí)鐘以鎖步方式發(fā)生。
這意味著如果 CPU 以 1.4MHz 運(yùn)行,則內(nèi)存必須以 1.4MHz 運(yùn)行,但這這很快成為一個(gè)問題。
他表示,隨著 CPU 開始加速到 10 MHz,能夠跟上的 RAM 變得非常昂貴。而事實(shí)上,從 RAM 到 CPU 的物理距離幾乎不可能跟上 CPU。此外,RAM 容量的增加(兆字節(jié)大小)意味著需要使用更復(fù)雜的控制電路來尋址內(nèi)存位置。這意味著當(dāng)您非順序地讀取內(nèi)存時(shí),內(nèi)存會(huì)變得具有不可預(yù)測(cè)的設(shè)置時(shí)間。
對(duì)此,行業(yè)提出的解決方案是保留少量 CPU 快速內(nèi)存,這就是L1 緩存。現(xiàn)在,L1 + CPU 的行為就像舊的 6502 CPU 一樣,但它可以調(diào)用 RAM,就像它是一個(gè)超高速硬盤驅(qū)動(dòng)器一樣,可以獲取當(dāng)前不在 L1 中的任何 RAM 塊。就像硬盤驅(qū)動(dòng)器一樣,CPU 只會(huì)等待必要的數(shù)據(jù)被提取到 L1 緩存中。
這種方法之所以奏效,是因?yàn)槌绦虻年P(guān)鍵部分往往非常小。足夠小到 CPU 在需要返回主內(nèi)存之前可以花費(fèi)大量時(shí)間運(yùn)行程序。但美中不足的是——數(shù)據(jù)與代碼。因?yàn)橐粋€(gè)程序可能會(huì)處理大量數(shù)據(jù)。這會(huì)導(dǎo)致 L1 緩存的使用不佳,并導(dǎo)致緩存中出現(xiàn)大量“misses”。所以 CPU 會(huì)有效地減慢主內(nèi)存的速度,這是可以接受的,除了 CPU 比這更慢的事實(shí)。
問題是 CPU 正在運(yùn)行的代碼很容易落入“最近最少使用”的桶中,并被淘汰出 L1 以支持正在處理的數(shù)據(jù)。一旦 CPU 返回到該代碼塊,它就必須停止并從主內(nèi)存中重新獲取代碼。這是非常低效的。
為了解決這個(gè)問題,CPU 轉(zhuǎn)向哈佛架構(gòu). (以早期的Harvard-1 計(jì)算機(jī)命名.) 在哈佛架構(gòu)中,代碼與數(shù)據(jù)保存在不同的內(nèi)存中。這具有簡(jiǎn)化數(shù)據(jù)路徑的優(yōu)勢(shì),因?yàn)榭蓤?zhí)行代碼來自一組路徑,而數(shù)據(jù)來自另一組路徑。更重要的是,通過將 L1 緩存分成兩部分(代碼與數(shù)據(jù)),數(shù)據(jù)永遠(yuǎn)不會(huì)意外驅(qū)逐正在運(yùn)行的代碼。
于是我們將 64KB L1 緩存拆分為 32KB 代碼和 32KB 數(shù)據(jù)。
緩存的其余部分用于嘗試處理越來越快的 CPU。CPU 時(shí)鐘越快,電能在時(shí)鐘周期之間的時(shí)間片內(nèi)傳輸?shù)木嚯x就越短。由于這是一個(gè)無法克服的物理問題,CPU 設(shè)計(jì)人員開始從主內(nèi)存“暫存”他們需要的數(shù)據(jù)。L2 的速度通常是 CPU 的一半,但尺寸更大,因此它可以在 CPU 本身繁忙時(shí)按順序流式傳輸接下來的幾個(gè)塊。當(dāng) CPU 請(qǐng)求下一個(gè)數(shù)據(jù)時(shí),它幾乎不需要等待那么長(zhǎng)時(shí)間,這就是我們獲得 256KB L2 緩存的方式。
但是L3呢?那個(gè)是從哪里來的?
最后一塊拼圖來自多核處理器。每個(gè)內(nèi)核都想繼續(xù)工作,但如果每次需要從主內(nèi)存中獲取更多數(shù)據(jù)時(shí)它們都必須落后于對(duì)方,那么它們就做不到。因此,L3 緩存在每個(gè)內(nèi)核上的不同 L2 緩存之間充當(dāng)緩沖區(qū)。它將依次嘗試為所有主內(nèi)存調(diào)用提供服務(wù),每次都會(huì)多拉一點(diǎn),以增加在 L2 緩存請(qǐng)求時(shí)它已經(jīng)擁有數(shù)據(jù)的可能性。這就是為什么 L3 的數(shù)量往往會(huì)隨著核心數(shù)量的增加而增加。內(nèi)核越多,它們就越有可能進(jìn)入主內(nèi)存的“戰(zhàn)斗”。
資料顯示,L3 緩存在 Nehalem(第一代酷睿 i7 系列)中成為主流,這是第一個(gè)單片四核 CPU 芯片,這意味著所有 4 個(gè)內(nèi)核都在同一塊硅片上。相比之下,它的前身 Core 2 Quad 由同一封裝上的兩個(gè)獨(dú)立 Core 2 Duo 芯片組成。
為何止步于L4?
在這部分開始之前,我們必須申明,雖然L4目前沒有被主流采用,但I(xiàn)BM早在2000年代就在其自己的某些X86芯片組中添加了L4緩存,并在2010年在System z11大型機(jī)的NUMA互連芯片組中添加了L4緩存。
據(jù)了解,IBM的z11處理器具有四個(gè)內(nèi)核,每個(gè)內(nèi)核具有64 KB的L1指令和128 KB的L1數(shù)據(jù)高速緩存,以及每個(gè)內(nèi)核1.5 MB的L2高速緩存和在這四個(gè)內(nèi)核之間的24 MB共享L3高速緩存。z10的NUMA芯片組具有兩排96 MB的L4緩存,總計(jì)192 MB。
在談到為什么沒有用到L4緩存的時(shí)候,知乎用戶tjunangang在一個(gè)問答下面回應(yīng)直言——緩存太占地方,而且投入和回報(bào)不成正比,不劃算。他表示,如下圖所示,三級(jí)緩存差不多占據(jù)了兩個(gè)核心的面積,如果加上四級(jí)呢?五級(jí)呢?要知道緩存容量都是急速遞增的,如果有四級(jí)緩存,單獨(dú)的緩存面積就比整個(gè)現(xiàn)有的CPU大。
在tjunangang看來,如果繼續(xù)引入L4緩存,可能引致下述問題:
1.同樣的晶圓,原本能生產(chǎn)32塊CPU,加上四級(jí)緩存可能10塊都生產(chǎn)不了,價(jià)格暴漲沒人買賬。
2.核心面積大,功耗大,發(fā)熱量大,對(duì)散熱設(shè)備要求高,與未來發(fā)展趨勢(shì)對(duì)著干..而且核心面積大,良品率低,比較悲劇的是容易碎(我按碎過好多塊)
3.堆緩存這種方式,明顯是土豪作風(fēng),要知道intel早期處理器連L3 Cache都沒有。而且關(guān)鍵的問題是,你單純的堆緩存,早晚有一天會(huì)混不下去,和之前攀主頻的競(jìng)賽類似,還不如想辦法去提升架構(gòu)。
4.對(duì)于整體性能的作用,L1 cache最大,L2次之, L3甚至不到L1 cache的十分之一。若是不計(jì)成本的話,加到L4還有情可原,加到L5其實(shí)已經(jīng)和系統(tǒng)內(nèi)存差不多了。
知名博主“老狼”則表示,目前已經(jīng)有L4了,它有兩種形式,分別是eDRAM和Optane DIMM。例如在英特爾的Iris系列中,就有一塊高速DRAM被放入Package中(eDRAM),它平時(shí)可以充當(dāng)顯存,也可以被設(shè)定為L(zhǎng)4緩存。
曾經(jīng)任職于Cray Research,Sun Microsystems,Oracle,Broadcom,Cavium和Marvell的芯片架構(gòu)師Rabin Sugumar在接受nextplatform采訪的時(shí)候表示,并沒有人規(guī)定L4緩存必須由嵌入式DRAM(就像IBM對(duì)其芯片所做的那樣)或更昂貴的SRAM構(gòu)成。
根據(jù)他的觀點(diǎn),就目前而言,我們的L3已經(jīng)很大。因此關(guān)于L4緩存,Rabin Sugumar也認(rèn)為也許是eDRAM,甚至是HBM或DRAM。在這種情況下,一個(gè)看起來很有趣的是——L4高速緩存實(shí)現(xiàn)是將HBM用作高速緩存,而不是延遲高速緩存,而不是帶寬高速緩存。
“這樣做的想法是,由于HBM容量有限且?guī)捿^高,因此我們可以獲得一些性能提升,并且在帶寬受限的使用案例中我們確實(shí)看到了顯著的收益。緩存未命中數(shù)。但是,就性能和成本而言,需要做的數(shù)學(xué)就是添加另一個(gè)緩存層是否值得。”Rabin Sugumar說。
有那么多人發(fā)布如此多觀點(diǎn),在筆者看來,Intel才是其中的關(guān)鍵因素。在日前,他們帶來了一個(gè)新的分享?
即將走向主流?
據(jù)外媒tomshardware報(bào)道,英特爾即將推出代號(hào)為 Meteor Lake 的處理器,將配備 L4 緩存的非官方信息已經(jīng)流傳了一段時(shí)間。而現(xiàn)在, VideoCardz 發(fā)現(xiàn)的一項(xiàng)新英特爾專利表明,英特爾已經(jīng)準(zhǔn)備好代號(hào)為 Adamantine L4 的高速緩存塊,這將可用于某些 CPU。
“該 IC 可以在某些應(yīng)用中與 AMD 的 3D V-Cache 競(jìng)爭(zhēng),但該小芯片不會(huì)僅用作性能助推器。”VideoCardz表示。
該專利表明,英特爾的 Adamantine(或 ADM)緩存不僅可以改善 CPU 和內(nèi)存之間的通信,還可以改善 CPU 和安全控制器之間的通信。例如,L4 可用于改進(jìn)引導(dǎo)優(yōu)化,甚至在重置時(shí)保留緩存中的數(shù)據(jù)以縮短加載時(shí)間。
報(bào)道表示,雖然專利本身沒有提到 Meteor Lake,但隨附的圖像清楚地展示了一個(gè)處理器,該處理器具有利用Intel 4工藝生產(chǎn)的兩個(gè)高性能的 Redwood Cove 和八個(gè)節(jié)能的 Crestmont,此外還包括一個(gè)基于英特爾 Gen 12.7 的圖形小芯片,還有一個(gè)包含兩個(gè)以上 Crestmont 內(nèi)核的 SoC 塊,以及一個(gè)使用英特爾 Foveros 3D 技術(shù)互連的 I/O 小芯片。該描述對(duì)應(yīng)于英特爾的 Meteor Lake 處理器。
同時(shí),Adamantine L4 緩存可用于 Meteor Lake 以外的廣泛應(yīng)用。
英特爾在介紹該專利的時(shí)候表示,下一代客戶端 SoC 架構(gòu)可能會(huì)引入大型封裝緩存,這將允許新的用途。
他們認(rèn)為,L4(例如,“Adamantine”或“ADM”)高速緩存的訪問時(shí)間可能比 DRAM 訪問時(shí)間短得多,后者用于改進(jìn)主機(jī) CPU 和安全控制器通信。實(shí)施例有助于保護(hù)啟動(dòng)優(yōu)化方面的創(chuàng)新。重置時(shí)具有更高預(yù)初始化內(nèi)存的高端芯片增加了價(jià)值,可能會(huì)增加收入。在重置時(shí)讓內(nèi)存可用還有助于消除傳統(tǒng) BIOS 假設(shè),并為現(xiàn)代設(shè)備用例(如汽車 IVI、家用和工業(yè)機(jī)器人等)提供支持,這就推動(dòng)產(chǎn)品走向新的細(xì)分市場(chǎng)。
也就就說,L4緩存要來了?
【來源:半導(dǎo)體行業(yè)觀察】