半導體製造技術發展的一個好處,就是能對10多年前的人做到降維打擊。比如說2001年發佈的Windows XP作業系統,對硬體最低配置要求包括至少64MB記憶體,推薦128MB大小確保流暢運作。
而在這個時代,不是說記憶體大小提升了多少,而是連CPU晶片上的三級快取(L3 cache),容量都可以達到256MB——處理器的片上儲存資源,其讀寫速度就比主記憶體要快得多了。IBM去年Hot Chips 2021上展示的Telum晶片,虛擬L3 cache大小就有256MB (雖然在實體硬體設計上有些差異)。有人可能會說,那不是針對消費電子,而是鎖定大型電腦。
AMD基於先進封裝技術,已經把電腦的CPU L3 cache堆到了最高192MB——而且是確確實實能夠在市面上買得到、裝進電腦裡,價格也不算多貴。這就是半導體技術,在某種程度上表現出的時代碾壓。不過片上cache這麼大,真的有用嗎?
有關多級cache的基礎知識
當代PC、手機的處理器,通常都會採用多級cache設計。比如高通(Qualcomm) Snapdragon處理器、Intel Core處理器;CPU部分都會有L1、L2、L3 cache。其中L1 cache最接近處理器核心,資料存取最快,容量也最小;接著是L2 cache,容量比L1 cache大很多,但速度會稍慢;L3是此類處理器的最後一級cache系統(LLC),容量最大,但速度也最慢。
前面提到的256MB cache,一般都只會是L3 cache——這種cache通常是處理器多個核心共用的一種cache (L1就是每個核心獨有、而非共用的);某些系統可能會有L4 cache,但L4 cache很少見,且這種cache在介質上也已經不再是片上SRAM;還有一些系統,在更高的層級會多一級System Cache,現在的手機AP SoC就是這樣。
AMD Zen 3的die shot,中間那些紅紅的都是L3 cache。
(來源:Fritzchens Fritz)
DRAM記憶體是一種很慢的儲存系統。現代CPU會率先預測所需的資料(和指令),提前把記憶體裡的資料放進cache裡,在核心需要的時候就可以立即取用。而多級cache的方案,是在速度、延遲、面積、成本等方面的某種權宜之計。
依據這個原理,更大的片內cache不就越有利於處理器的速度和性能提升嗎?實際上,產業從以前PC處理器連L2 cache都不在片內,到現在L3 cache大到能裝Windows XP,歷經了較長的歷史發展期,但cache可不是越大就一定越好。
各方權衡
從當代中央處理器的die shot不難發現,cache可能佔據了最大面積。片上cache用料增多,通常就意味著die size要變大,面積增加成本就要跟著急劇提升,否則電腦也不需要記憶體、硬碟這種更多級的儲存系統了。但也不光是成本導致cache做不大,相關因素還包括利用率、延遲等。
從晶片設計的角度來說,各級cache的設計都受到一定的限制,比如L1 cache的位置和layout,不同的容量,在設計上就可能會有很大差別(而且在系統層面似乎還與更多因素相關)。利用率相關的問題,則有了常聽到的cache miss rate、hit rate (未命中率/命中率)這類詞。CPU的設計目標普遍在於最小化cache miss,也就是資料應隨時在cache中準備就緒——因為如果cache裡沒有,需要去內存取資料,就是上百個週期的延遲問題了。
值得一提的是,延遲與cache大小很相關。cache越大,延遲一般也就越久。一方面是因為cache做大後,面積也就變大了,和核心之間的物理距離也會變遠;更重要的是,要從更大的空間去找到資料,要耗費的時間也更久。
例如當代較小的L1 cache訪問延遲可能低至3個時脈週期,而大的會增加到5個;小尺寸L2 cache延遲8個週期,大的甚至可以達到19個週期。聽起來好像也沒什麼,但1個週期的節約在晶片設計上都是極為精貴的,做大cache,或許會有助於提升命中率,但延遲也可能十分致命。
先進封裝製程實現的大cache
去年AMD更新了自家的Ryzen 5000系列處理器,在原有5000系列處理器的基礎上,發佈「3D V-cache」版,就是在原本的處理器die上方疊了一層L3 cache。
上圖是去年Computex,AMD董事長暨執行長蘇姿丰展示的Ryzen 5900X,其中一片die的上方垂直堆疊了一片L3 cache (左上方的那片die,即CCD die)。AMD表示,成品處理器上每片CCD都可以最多疊96MB SRAM,對Ryzen 5000而言,最多就能堆出192MB L3 cache。
這種3D堆疊方案是基於台積電(TSMC)的SoIC製程技術,其亮點在於堆疊兩片die是採用hybrid bonding,能夠達成顯著更小的鍵合間距。
AMD當前針對伺服器的Epyc,和PC的Ryzen,都已有應用3D V-cache技術的產品問世。而且AMD也明確表示後序的Zen 4、Zen 5等新架構,也會持續推進3D V-cache的佈局工作。針對Ryzen 5000 + 3D V-cache的宣傳,AMD主要把著力點放在遊戲上,該公司並表示相較於原版沒有用3D V-cache的處理器,遊戲性能平均提升15%。
更大容量cache的代價
說到性能,先前Chips and Cheese對IBM Telum處理器,和具備3D V-cache的Ryzen處理器進行模擬測試。基於IBM先前公佈的消息,IBM Telum跑在5+ GHz基頻上,且256MB L3 cache平均延遲在12ns左右(5GHz 60個週期)。此項比較中,AMD Zen 3架構的32MB L3平均延遲46個週期。
Chips and Cheese所做以下相關指令追蹤的大量測試,是透過類比的方式來明確高延遲cache帶來的影響。
從結果來看,某些子項獲得了相當大幅度的性能提升,但也有很多對IPC產生了負面影響,最糟糕的情況下有超過10%的副作用。IPC低10%,在CPU領域基本就是一代微架構的差異。
沒有受益於更大容量L3 cache的負載,主要是因為在32MB容量之下,cache hit rate cache命中率就已經很高了。再把容量提升到256MB,更高的延遲實際上是對IPC造成最大影響的干擾。還有不少負載的working set size非常大,即便有8倍的cache容量增加,提升的那點命中率也不足以抵消延遲更長造成的影響。
Chips and Cheese在評論中提到,從另一個角度來看,要用更大的L3 cache,帶來高延遲的前提下,需要顯著縮減cache未命中率,才能夠在更多應用中帶來實際收益;否則對這部分應用而言,基本就是在浪費die面積、徒增功耗。
再來看看AMD的3D V-cache,畢竟IBM Telum離普通用戶還是有些遙遠。AMD的這類產品已經上市了,以Ryzen 5800X3D為例,這顆晶片約等於Ryzen 5800X加了3D V-cache的版本,CPU的L3 cache從原本的32MB,增加到了96MB,是原版5800X的3倍之大;達到Windows XP的記憶體容量最低安裝需求。
不過基於晶片的具體規格,更大的L3 cache從外部特性來看就已經付出了代價。首先是核心超頻特性被禁用,而且基頻降了400MHz,睿頻降了200MHz,這和電壓方面的限制應該有關;密度更高還是疊起來的cache,顯然對於榨取核心性能會有影響。這對於更倚重核心性能的負載,可能會不利。
另一點是Ryzen 5800X3D的價格更高了,達到5900X的價格水準。而後者的CPU核心數比前者多出4個,頻率也更高;當然L3 cache容量不及前者。可見用更多的die去做大cache,的確付出了代價。
因為AMD方面並未提供V-cache的延遲資訊,所以Chips and Cheese做了兩組模擬測試。其一是假定96MB L3 cache的延遲與32MB一樣——這是個理想情況,可以想像成是3D封裝技術帶來的紅利;還有一組是設定96MB L3 cache延遲為52個週期——也就是相較於32MB L3 cache多出6個週期的延遲,結果如下圖:
在延遲無增加的情況下,一切自然是十分美好的。增加6個週期延遲以後,基本是前面IBM Telum 256MB cache的翻版。不過大部分對延遲比較敏感的負載,性能損失也就不到5%。雖說5%的IPC降低也挺不好看,但實際應用中的感知應該不會那麼明確。上述模擬相關的測試詳情,可參詳Chips and Cheese網站。
所以AMD把它定位在「遊戲」
值得一提的是,這個測試並不是要否定IBM和AMD用大cache的設計。因為的確是存在部分子項,在cache容量加大後有顯著收益。而且IBM先前多代產品都有用大cache的傳統,畢竟其目標市場很明確,就是較大working set size的負載類型:這類應用對延遲本身就相對的沒那麼敏感。
比較遺憾的是,Chips and Cheese並未明確哪些類型的負載,因為延遲增加而存在明確的性能退步。但AnandTech上個月已經對Ryzen 5800X3D做了測試,遺憾的是,沒測延遲;然從系統測試結果來看,延遲好像也並未構成大的影響。
實際上,AMD針對這類型的晶片做宣傳時也明確它鎖定「遊戲」。AnandTech測了不少遊戲,本文僅提出幾個比較具有代表性的,如《孤島驚魂5》、《無主之地3》和《最終幻想15》。
請注意,圖中的價格標注應該是錯誤的,5800X的價格是350美元。
在常規解析度下,5800X3D在大半遊戲裡,都可越級秒殺自家更高定位的產品,以及競品;雖然價格也的確變高了。比如在《孤島驚魂5》1,080p Ultra畫質下,Ryzen 5800X3D比原版5800X,影格率提升了多達27%;比核心數更多、IPC更高、頻率也更高的Core i7-12700K領先9%。
不過在不同解析度和某些個別遊戲裡,測試結果會有差異,比如在4K解析度下,Ryzen 5800X3D的大容量cache就變得無足輕重了,可輕易被主頻和核心數更多的Intel超越。還有像《戰爭機器戰略版》(Gears Tactics)、《奇異小隊》(Strange Brigade)這種遊戲,對AMD的U本來也沒有那麼友好,即便常規解析度下,5800X3D其實也討不到多少好處。
不過在遊戲之外,各類系統測試或真是負載測試都表現出,Ryzen 5800X3D的大cache沒有什麼用。而且因為前文提到了其核心頻率相比原版5800X還更低,所以某些測試裡的成績還弱於5800X,更不要說和核心微架構演進的第12代Core比。比如Cinebench R23多執行緒、Blender測試。
基本可以明確的是,PC使用場景下,非遊戲類應用,3D V-cache即便達成了更大的cache容量,而且封裝技術還很高級,價格還更貴,也幫不上什麼忙。無怪乎AMD將此完全針對遊戲玩家做宣傳。所以對普通用戶而言,還是要依據需求來決策選擇。
不過,像3D V-cache這種在工程上付出了較大努力的產品,還是值得相當程度的肯定。尤其AMD這個系列的產品,乃是時下先進封裝製程技術發展的典型代表;更何況不是還有應用了3D V-cache的Epyc伺服器處理器嗎?
本文原刊登於EE Time China網站
The post 把CPU cache堆到256MB真有那麼美好? appeared first on 電子工程專輯.