IBM,預言了緩存的未來?

文 | 內容由半導體行業(yè)觀察,編譯自「anandtech」
在上周的 Hot Chips 大會上,IBM 宣布了其新的大型機 Z 處理器。這是一個很有趣的設計,值得大肆討論一番。但在本文里,我想特別關注該核心設計的一個功能。
IBM Z 處理器以擁有大型 L3 緩存而聞名,并以單獨的全局 L4 緩存芯片作為后盾,該芯片可作為多個處理器插槽之間的緩存——IBM 已經(jīng)通過新的 Telum 芯片取消了這一點——沒有 L4,但有趣的是,沒有L3。
他們所做的可能預示著片上緩存設計的未來。

緩存的簡要入門
任何現(xiàn)代處理器都有與其關聯(lián)的多級緩存。它們由容量、延遲和功耗分開——最靠近執(zhí)行端口的最快緩存往往很小,然后我們有更大的緩存,速度稍慢,然后可能是在我們到達主內存之前的另一個緩存。緩存的存在是因為 CPU 內核現(xiàn)在想要數(shù)據(jù),如果它全部保存在 DRAM 中,那么它每次獲取數(shù)據(jù)將需要 300 多個周期。
現(xiàn)代 CPU 內核會提前預測它需要什么數(shù)據(jù),然后先將它從 DRAM 帶入其緩存,這樣的話內核可以在需要時更快地獲取它。一旦緩存線被使用,它通常會從最近的一級緩存 (L1) 被“趕”到下一級緩存 (L2),或者如果 L2 緩存已滿,則 L2 中最舊的緩存線將被驅逐到一個L3 緩存以騰出空間。這意味著如果再次需要該數(shù)據(jù)線,它不會離開內核太遠。

AMD 第一代 Zen 處理器上的 L1、L2 和共享 L3 的展示
還有私有和共享緩存。
現(xiàn)代處理器設計具有多個內核,在這些內核中將至少有一個只有該內核才能訪問的私有緩存(L1)。在此之上,緩存可以是仍位于核心本地的私有緩存,也可以是任何核心都可以使用的共享緩存。
例如,英特爾 Coffee Lake 處理器有八個內核,每個內核都有一個 256 KB 的私有 L2 緩存,但在芯片范圍內,所有八個內核之間有一個 16 MB 的共享 L3。這意味著,如果單個內核想要,它可以不斷地將數(shù)據(jù)從較小的 L2 趕到較大的 L3 中,并且如果要重用該數(shù)據(jù),則可以擁有一個資源池。不僅如此,如果第二個內核也需要一些數(shù)據(jù),他們可以在共享的 L3 緩存中找到它,而不必將其寫出到主內存并在那里獲取。使事情復雜化。最終的結果是緩存有助于減少執(zhí)行時間,并在需要或需要時從主內存中引入更多數(shù)據(jù)。
權衡
考慮到這一點,您可能會問為什么我們在處理器上看不到 1 GB 的 L1 或 L2 緩存。這是一個完全有效的問題。這里有許多因素在起作用,包括芯片面積、效用和延遲。
芯片面積很容易首先解決——因為最終每個緩存結構可能只有一個定義的空間。當你在硅中設計內核時,可能有一種最好的方法來布置內核的組件以獲得最快的關鍵路徑。但是緩存,尤其是L1緩存,必須在靠近需要數(shù)據(jù)的地方。如果您想要一個大的 128 KB L1 緩存,那么設計與具有 4 KB L1 緩存的芯片布局將會大不相同。所以這里有一個權衡。
除了 L1,L2 緩存有時也是芯片面積的大量消耗者,雖然它(通常)不受其他核心設計的限制,但它仍然必須與需要在芯片上。任何大型共享緩存,無論最終成為 2 級緩存還是 3 級緩存,通常都可能是芯片的最大部分,具體則取決于所使用的工藝節(jié)點。
實用性也是一個關鍵因素——我們在 AnandTech 上主要談論通用處理器,尤其是那些基于 x86 構建的用于 PC 和服務器的處理器,或者用于智能手機和服務器的 Arm,但是有很多專用設計,它們的作用是針對特定的工作量或任務。如果處理器核心需要做的只是處理數(shù)據(jù),例如相機 AI 引擎,那么該工作負載就是一個明確定義的問題。這意味著可以對工作負載進行建模,并且可以優(yōu)化緩存的大小以提供最佳性能/功耗。

如果緩存的目的是將數(shù)據(jù)靠近核心,那么任何時候緩存中的數(shù)據(jù)沒有準備好,就稱為緩存未命中——任何 CPU 設計的目標都是盡量減少緩存未命中,以換取性能或功率,因此具有明確定義的工作負載,
延遲也是設計大緩存的一個重要因素。
您擁有的緩存越多,訪問所需的時間就越長——不僅因為物理大小(以及與核心的距離),還因為有更多的緩存需要搜尋。例如,可以在短短三個周期內訪問小型現(xiàn)代 L1 緩存,而大型現(xiàn)代 L1 緩存可能需要五個周期的延遲。小型 L2 緩存可以低至 8 個周期,而大型 L2 緩存可能有 19 個周期。
緩存設計中涉及到的不僅僅是更大等于更慢,所有大型 CPU 設計公司都將煞費苦心地努力盡可能地縮短這些周期,因為通常 L1 緩存或 L2 緩存中的延遲節(jié)省提供良好的性能增益。但最終如果你做得更大,您必須滿足這樣一個事實,即延遲通常會更大,但您的緩存未命中率(cache miss )會更低。這又回到了上一段討論定義的工作負載。我們看到像 AMD、英特爾、Arm 等公司與其大客戶一起進行廣泛的工作負載分析,以了解什么最有效以及他們的核心設計應該如何發(fā)展。
IBM 的革命
在第一段中,我提到IBM Z是他們的大型主機產品——這是行業(yè)的大拿。它比政府授權的核掩體建造得更好。這些系統(tǒng)支撐著社會的關鍵要素,例如基礎設施和銀行業(yè)務。這些系統(tǒng)的停機時間以每年幾毫秒為單位,并且它們具有故障安全和故障轉移功能——對于金融交易,當它進行時,它必須無故障地提交給所有正確的數(shù)據(jù)庫,甚至在發(fā)生故障的情況下整個鏈條的物理故障。
這就是IBM Z的用武之地。它非常小眾,但具有令人難以置信的驚人設計。
在上一代z15產品中,沒有1 CPU = 1系統(tǒng)產品的概念。IBM Z的基本單元是一個五處理器系統(tǒng),使用兩種不同類型的處理器。四個計算處理器 (CP) 每個在 696mm2中包含12個內核和256MB共享L3緩存,構建在14nm工藝上,運行頻率為5.2GHz。這四個處理器分成兩對,但兩對也連接到存儲控制器 (Storage Controller:SC),同樣是 696mm和14nm,但是這個存儲控制器擁有960MB的共享L4緩存,用于所有四個處理器之間的數(shù)據(jù)。

請注意,該系統(tǒng)沒有“全局”DRAM,每個計算處理器都有自己的 DDR 支持的等效內存。IBM 然后將這五個處理器“drawer”與其他四個處理器組合成一個系統(tǒng)。這意味著單個 IBM z15 系統(tǒng)是 25 x 696mm
的硅片面積,它們之間有 20 x 256 MB 的 L3 緩存,還有 5 x 960 MB 的 L4 緩存,以全對全拓撲連接。
可以說,IBM z15 是一頭野獸。但是下一代 IBM Z,稱為 IBM Telum 而不是 IBM z16,可能是因為他們對所有緩存采用了不同的方法。
IBM,告訴他們如何處理緩存
新系統(tǒng)取消了帶有 L4 緩存的單獨存儲控制器。相反,我們有一個看起來像八核的普通處理器。基于三星 7nm 和 530mm構建,IBM 將兩個處理器封裝在一起,然后將四個封裝(8 個 CPU,64 核)集成到一個單元中。四個單元構成一個系統(tǒng),總共 32 個 CPU/256 個內核。

在單個芯片上,我們有八個內核。每個內核具有 32 MB 的私有 L2 緩存,具有 19 個周期的訪問延遲。這對于 L2 緩存來說是一個很長的延遲,但它也比 Zen 3 的 L2 緩存大 64 倍,這是一個 12 周期的延遲。

從芯片設計來看,中間的所有空間都是 L2 緩存。沒有 L3 緩存。沒有可供所有內核訪問的物理共享 L3。如果沒有 z15 那樣的集中式緩存芯片,這意味著為了讓具有一定數(shù)量共享數(shù)據(jù)的代碼能夠工作,它需要往返主內存,這很慢。但IBM已經(jīng)想到了這一點。
這個概念是L2緩存不僅僅是L2緩存。
從表面上看,每個 L2 緩存確實是每個核心的私有緩存,而32MB是非常巨大的。但是,當需要從 L2 逐出緩存行時,無論是處理器有意還是需要騰出空間,而不是簡單地消失,它會嘗試在芯片上的其他地方尋找空間。如果它在不同內核的 L2 中找到一個空間,它就會坐在那里,并被標記為 L3 緩存線。
IBM 在這里實施的是存在于私有物理緩存中的共享虛擬緩存的概念。這意味著 L2 緩存和 L3 緩存成為相同的物理事物,并且緩存可以根據(jù)工作負載的需要包含來自所有不同內核的 L2 和 L3 緩存線的混合。這對于租戶不需要完整 CPU 的云服務(是的,IBM 在其云中提供 IBM Z)或不能完全跨內核擴展的工作負載變得很重要。
這意味著具有 8 個私有 32 MB L2 緩存的整個芯片也可以被視為具有 256 MB 共享“虛擬”L3 緩存。在這種情況下,考慮消費領域的等效情況:AMD 的 Zen 3 小芯片具有 8 個內核和 32 MB 的 L3 緩存,每個內核只有 512 KB 的私有 L2 緩存。如果它實現(xiàn)了像 IBM 這樣更大的 L2/虛擬 L3 方案,我們最終會得到每個核心 4.5 MB 的私有 L2 緩存,或者每個小芯片 36 MB 的共享虛擬 L3。
這種 IBM Z 方案有一個優(yōu)勢,如果一個核心恰好需要位于虛擬 L3 中的數(shù)據(jù),而該虛擬 L3 線路恰好位于其私有 L2 中,那么 19 個周期的延遲比共享的低得多。物理 L3 緩存將是(~35-55 個周期)。然而,更有可能的是,所需的虛擬 L3 高速緩存線位于不同內核的 L2 高速緩存中,IBM 表示,在其具有 320 GB/s 帶寬的雙向環(huán)互連中,這會導致平均 12 納秒的延遲。5.2 GHz 下的 12 納秒約為 62 個周期,這將比物理 L3 緩存慢,但更大的 L2 應該意味著 L3 使用的壓力更小。但也因為 L2 和 L3 的大小是如此靈活和大,根據(jù)工作負載,整體延遲應該更低,工作負載范圍應該增加。
但IBM的設計優(yōu)勢遠不止于此。我們必須更深入地探討。
對于IBM Telum,我們在一個封裝中有兩個芯片,一個單元中有四個封裝,一個系統(tǒng)中有四個單元,總共有32個芯片和256個內核。IBM 沒有使用外部 L4 緩存芯片,而是更進一步,使每個私有 L2 緩存也可以容納相當于虛擬 L4 的緩存。
這意味著如果一個緩存線從一個芯片上的虛擬 L3 中被逐出,它會去尋找系統(tǒng)中的另一個芯片來生存,并被標記為虛擬 L4 緩存線。
這意味著,從單核的角度來看,在一個 256 核的系統(tǒng)中,它可以訪問:
32 MB 私有二級緩存(19 周期延遲)
256 MB 片上共享虛擬 L3 緩存(+12ns 延遲)
8192 MB / 8 GB 的片外共享虛擬 L4 緩存(+? 延遲)
從技術上講,從單核的角度來看,這些數(shù)字應該是 32 MB / 224 MB / 7936 MB,因為單核不會將 L2 線驅逐到自己的 L2 中并將其標記為 L3,依此類推。
IBM 表示,使用這種虛擬緩存系統(tǒng),每個內核的緩存相當于 IBM z15 的 1.5 倍,而且還改善了數(shù)據(jù)訪問的平均延遲。總體而言,IBM 聲稱每個插槽的性能提高了 40% 以上。其他基準目前不可用。
這怎么可能?
在我看來,這就是魔法。當我第一次看到這個時,我對實際發(fā)生的事情感到有點驚訝。
在會后的問答環(huán)節(jié)中,Christian Jacobi 博士(Z 的首席架構師)表示,該系統(tǒng)旨在跟蹤緩存未命中的數(shù)據(jù),使用廣播,并跟蹤內存狀態(tài)位以向外部芯片廣播。這些貫穿整個系統(tǒng),當數(shù)據(jù)到達時,它確保它可以被使用,并在處理數(shù)據(jù)之前確認所有其他副本都已失效。在作為活動的一部分的 slack 頻道中,他還表示正在進行大量的循環(huán)計數(shù)!
說實話,像這樣的事情有很多工作要做,而且可能仍然有很多考慮要向 IBM 提出關于其操作的考慮,例如有功功率,或者緩存是否在空閑狀態(tài)下斷電,甚至被排除在接受之外完全驅逐以保證單個內核的性能一致性。它讓我思考在 x86 領域,甚至消費設備中什么是相關的和可能的。
如果我不提及 AMD 即將推出的 V-cache 技術,那么我們的討論是不完整的。該技術通過在頂部添加垂直堆疊的 64 MB L3 小芯片,設置為每個小芯片啟用 96 MB 的 L3 緩存,而不是 32 MB。但是,如果該小芯片不是 L3,而是考慮每個內核額外 8 MB 的 L2,并且能夠接受虛擬 L3 緩存線,這對性能意味著什么?
最終,我與一些行業(yè)同行討論了 IBM 的虛擬緩存理念,他們的評論從“它不應該很好地工作”到“它很復雜”以及“如果他們能像所說的那樣做,那就太酷了”。?
更多精彩內容,關注鈦媒體微信號(ID:taimeiti),或者下載鈦媒體App
核心關鍵字: 科創(chuàng)板 智能制造| 留言與評論(共有 0 條評論) |



