銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

AMD的Zen架構可謂大獲成功,除了桌面版本的8核心產品外,AMD還推出了面向服務器市場的更多核心產品,包括16、32核心的處理器。對超多核心處理器產品而言,如何保證處理器多核心之間的通訊和同步,一直是一個非常重要的問題。那麼,在AMD的Zen家族產品上又是如何解決這個問題的呢?其所採用的AMD Zeppelin核心又有哪些特點呢?

AMD Zen架構可謂AMD近年來最具革命性的架構之一。Zen架構不僅僅在性能上讓AMD重獲新生,並且帶來了大量獨特的設計和全新的特性,其中很重要的一點就是互聯性能。實際上,Zen架構早在設計之初,就已經考慮了不同場景下的應用需求:一方面是主流的處理器,擁有4~8個核心;另一方面是企業客戶和服務器市場,需要多達20~30個處理器核心。

面對這樣完全不同的需求,AMD需要在技術上做出特殊設計。鑑於此,AMD最終拿出的方案是“Zeppelin”核心,也就是中文被稱為“齊柏林”的核心。這款核心的特殊設計,可以讓AMD能夠滿足不同的用戶,包括桌面的銳龍處理器、服務器的EPYC以及隨後才推出的、面向HEDT市場的銳龍 Threadripper。

總覽佈局——Zeppelin的功能結構

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲Zeppelin核心包括2個CCX核心、內存控制器、16通道IFIS和PCIe複用控制器、IFOP、 USB控制器和南橋控制器。

一個完整的Zeppelin核心如圖所示。從圖中可以看出,一個Zeppelin核心中擁有2個CCX核心,2個IFIS/PCIe核心、4個IFOP核心以及1個DDR4內存控制器。具體一些來看,Zeppelin核心的單個PCIe控制器有16個PCIe 3.0通道,兩個總計就是32個通道,另外這些PCIe控制器都支持AMD自家的Infinity Fabric InterSocket (IFIS)協議。在內存控制器方面,Zeppelin擁有一個雙通道DDR4內存控制器,支持ECC校驗,每通道最高支持256GiB內存,支持如此巨大的內存容量主要是考慮到企業級用戶的需求。

接下來則是最重要的部分,為保證同一個襯底上不同核心之間的通信需求,AMD還在Zeppelin上設計了4個Infinity Fabric On-Package(IFOP),也正是由於這些接口,使得AMD能夠在保證處理器內部核心通訊性能的情況下,通過搭積木的方式,靈活使用不同數量的Zeppelin核心來實現不同核心數量的CPU,並面向不同的市場。

另外,Zeppelin核心上也存在一些常規的設計,比如4個USB 3.1接口控制器,以及南橋控制器等。AMD稱南橋控制器為服務器控制器中樞(SCH),SCH支持所有的低速接口,包括SPI、LPC、UART、I2C和SMBus,SCH還包括實時時鐘部分。

SDF和SCF——Infinity Fabric的內部結構

Zeppelin在核心架構上的一大創舉就是被稱為“Infinity Fabric”(無限平鋪)的總線方案了,這個總線方案堪稱整個Zen架構的核心。俗話說“要想富先修路”,AMD這次就修了一條這樣的高速道路,並用其“無限”擴展自己的產品。根據AMD的資料來看,Infinity Fabric實際上被分成2個部分,分別是可擴展數據結構SDF和可擴展控制結構SCF,本文的重點將集中在SDF部分。

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲AMD目前處理器間和處理器的外部通訊主要依靠Infinity Fabric總線。

根據現有資料,SDF部分的組成結構還是比較複雜的。如下圖所示,該圖展示了SDF的部分細節,為了更清楚地顯示SDF和內部通訊部分的連接,圖片中的比例做出了調整,兩個CCX被大幅度縮小了體積,SDF和其他接口被畫的更大了一些。

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲Zeppelin的內部結構連接方位圖。

從圖中可以看出,兩個CCX有單獨的通道就是Cache-Coherent Master(CCM)直連SDF,CCM的主要作用是核心之間數據的貫穿連接,一個Zeppelin上的兩個CCX通過SDF和CCM直接進行通訊。在功能單元方面,DDR4內存控制器通過統一內存控制器也就是UMC連接至SDF平臺,兩個DDR4內存通道佔據了2個UMC接口。

在I/O個和各種接口連接部分,AMD設計了名為IOMS的接口,用於直接連接I/O Hub。I/O Hub同時提供了2個PCIe控制器、1個SATA控制器、USB、SCH(南橋)等接口。

在這些常見接口之外,AMD多芯片架構的主力是被稱為Coherent AMD socKet Extender(CAKE)的模塊,這個模塊的作用是將本地的SDF請求編碼為單個數據包,每個週期通過任意的SerDes(串行收發器)發送出去。AMD總共設計了6個CAKE接口,其中4個用於連接IFOP、2個用於IFIS。值得一提的是,IFIS的CAKE接口實際上和PCIe接口複用,其中一個端口甚至提供了MUX控制器,有關這部分內容下文還有更詳細的敘述。

在頻率控制方面,所有的SDF組件都以內存DRAM的頻率作為基準運行,比如使用DDR4 2133的內存時,SDF的頻率將運行在1066MHz,這種設計是AMD為了消除交叉延遲而做出的基本設計。

在瞭解基本結構後,本文還給出了另一張重新繪製後的圖片。這張圖片相比上一張圖片能夠更清晰地展示SDF連接情況,接下來,本文還將進一步探討SDF的內部設計內容。

小知識:CAKE的數據傳輸

Infinity可擴展數據結構和SerDes之間的接口是CAKE,它接收數據傳輸請求並將其編碼為128bit的數據包,然後通過任一的SerDes也就是串行解串器進行發送,CAKE也將解碼回覆給SDF。和附加到SDF的所有部分一樣的是,CAKE以內存的MEMCLK頻率工作,以消除交叉延遲。由於封裝上鍊路的性能敏感性,IFOP鏈路相對於DDR4其帶寬大約是後者的2倍,IFOP SerDes的每個CAEK每時鐘週期執行4次傳輸,而IFIS SerDes則執行高達8次。

聰明而複雜的設計——可擴展數據結構

SDF Trasnsport Layer

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲SDF結構設計簡圖

從上圖的SDF結構設計簡圖可以看到,位於圖中央被稱為SDF Trasnsport Layer的部分是SDF的數據中轉中心,周圍的包括CCX、內存、I/O Hub、IFIS/IFOP等單元都通過各自不同的方式轉接至SDF Trasnsport Layer。

具體來看,SDF Trasnsport Layer周圍的CCM、IMOS、CAKE、UMC和上文介紹的內容一樣,分別為CCX、I/O Hub、IFIS/IFOP以及內存提供了數據轉接。之所以需要轉接,是因為各個接口的數據結構不同,需要通過轉接器將其轉換為SDF Trasnsport Layer可以處理和傳輸的格式。

另外,IOMS和CCM是唯一能夠發出DRAM請求的接口。與此相應的,CAKE的功能則是雙向轉換,因為IFIS/IFOP的數據格式是串行,CAKE可以將串行轉換為SDF Trasnsport Layer使用的格式,反之亦然。

數據本地訪問

在本地訪問的情況下,CCX核心的數據請求將通過CCX發出,經過CCM、通過SDF Trasnsport Layer後,再傳輸至UMC和本地DRAM通道。所讀取的數據將通過相反的順序沿著相似的路徑回到CCX。根據AMD的數據,CPU頻率為2.4GHz、DDR4 2666 19-19-19內存(即MEMCLK為1333MHz)數據的往返時間大約為90ns。

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲本地訪問的數據讀取路徑示意圖

數據非本地訪問

除了數據本地訪問外,還有數據非本地訪問的情況。這種情況多發生在HEDT平臺的銳龍Threadripper以及面向服務器的EPYC上。簡而言之,非本地訪問就是指一個襯底上有多個Zeppelin核心,不同Zeppelin之間的存儲器數據訪問。在這種情況下,存儲器訪問可能必須被路由到相鄰的Zeppelin核心,在這個過程中,無論路線如何,其基本路徑總是相似的。

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲非本地訪問時的數據讀取路徑示意圖

在數據非本地訪問中,本地核心請求通過CCX發出,通過CCM和經過編碼的CAKE模塊進行路由後,通過SerDes(IFIS接口)再將其發送到遠程核心的CAKE模塊,遠程核心的CAKE模塊進行解碼後將其發送到適當的UMC,再轉給相關DRAM通道,然後在內存中進行查找。該響應以相反的順序,將查找到的數據返回請求源。

根據AMD的數據,在雙向多處理器配置中,即CPU頻率為2.4GHz、DDR4 2666 19-19-19內存(即MEMCLK為1333MHz),同一個封裝中的裸片數據往返大約需要145ns,在不同封裝中的裸片數據往返時間大約需要200ns。

在最差的情況下,也就是最長的路徑,那就是請求從第一個處理器的某個CCX發出,需要跨接口去另一個處理器的查找,恰巧又並非直達核心,需要經過另一個處理器同一個襯底的核心轉接,這樣相當於一次數據查找跨越了3個核心。不過AMD沒有報告在這種情況下的數據延遲,一般來說發生的可能性也微乎其微。

理論上來說,等待的時間差異取決於訪問的SerDes類型。值得一提的是,在多核心的複合產品中,AMD使用“智能預取”技術極大地減輕了連接到遠程芯片的內存請求延遲。

I/O子系統設計解讀

再來看看有關I/O部分。在之前的圖片中,有關I/O部分即IFIS/PCIe的接口位於整個模塊的左上角和右下角,這兩個模塊都擁有一組PCIe 3.0 x16的高速通道,並且和Infinity Fabric InterSocket控制器(IFIS)實現了複用。此外,下圖的鏈路也和SATA控制器實現了複用。

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲I/O子系統設計結構圖,複用設計是其一大特點。

所謂複用,是指整個鏈路可以根據不同的用途選擇不同的傳輸方案。比如在多核心或者單一襯底的多芯片封裝中,核心或者芯片之間的數據傳輸要求使用Infinity Fabric,那麼所有的16個鏈路都將轉為Infinity Fabric通道;如果選擇的是PCIe方案,則16個鏈路又可以轉為PCIe 3.0 x16。不僅如此,在SATA控制器上也是如此,最多可以選擇8個鏈路用於SATA通道。需要注意的是,AMD也允許用戶選擇混和鏈路,也就是說SATA端口選擇完成後,剩餘的通道依舊可以用作PCIe或者其他。

除了PCIe、SATA外,雖然AMD在發佈EYPC和Ryzen Embedded的部分處理器時沒有說明,但實際上這些鏈路還可以作為以太網鏈路使用,比如可以配置為支持8個SATA和最多4個10GbE的以太網端口,或者和PCIe進行復用。AMD表示,為支持這些功能而添加的多路複用功能只給對延遲非常敏感的Infinity Fabric增加了大約一個時鐘的延遲,幾乎微乎其微。

三種規格——封裝和接口淺析

在瞭解了Zeppelin有關連接和總線的相關內容後,接下來本文將討論一下Zeppelin的封裝和接口的內容。Zeppelin在封裝和接口方面經過了精心的設計,並且對封裝佈線和成本進行了優化。Zeppelin的設計將面向所有的市場,包括服務器、桌面和HEDT。對於服務器市場而言,AMD設計了一款使用4個Zeppelin核心的多芯片模塊,併為該模塊設計了一個名為SP4的新服務器插座接口。

對於高端桌面市場也就是HEDT而言,AMD設計了一款採用2個Zeppelin核心的多芯片模塊,採用的是一種新的HEDT插座,名為sTR4(SocketTR4)。對於臺式機上,Zeppelin單顆核心就可以滿足需求,採用的接口則是比較傳統的AM4。需要注意的是,雖然sTR4和SP3封裝相似,但是兩者的電氣特性完全不同,內部結構也有所差異,因此不能互相換用,互不兼容。

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲Zeppelin在封裝方面採用了倒裝封裝方案。

在封裝方面,AMD採用了新的倒裝芯片封裝,這意味著芯片的I/O面將直接朝向基板,這樣做在技術上難度較高一些,但是可以大幅度降低芯片封裝尺寸,並且在散熱、電氣性能上有更好的表現。接下來我們依次瞭解一下AMD的各種接口和封裝。

SP3接口和相關芯片封裝

SP3接口和相應封裝的成品有8個DDR4通道和128個PCIe 3.0通道,配置了最多4個Zeppelin核心。SP3封裝採用的LGA方式,擁有4094個觸點,尺寸為58mm×75mm。這個接口和封裝設計是面向單路、雙路服務器使用的。AMD還給出了SP3封裝的電源特性。SP3最多支持高達300A的電流和200W的TDP,還有大約300uF的封裝電容。

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲SP3接口的產品封裝完成後正視圖,可見四個Zeppelin核心。

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲SP3接口的電氣性能示意圖。

SP3封裝的問題是有關DDR4通道的路由問題。解決方法是將通道放置在芯片的左下角以便所有的DDR通道都面向封裝的左右邊緣。請注意,為了解決這個問題,Zeppelin的兩個核心被旋轉了180°佈置,這是為了防止在芯片下方佈置DDR通道。在整個封裝內,IFIS連接必須在封裝後的左側和右側固定,DDR則需要連接至頂部和底部。

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲由於AMD在SP3接口上選擇的是兩兩連接,因此需要四個層來滿足IFOP和IFIS的通路需求,順便解決了DDR內存接口的需求。

IFOP需要兩層封裝才能滿足4個核心兩兩聯通的需求。層A滿足了右上和左下連接的需求,以及右上和右下、左上和左下、右上和左上、右下和左下等連接。層B主要滿足的是左上和右下,以及相對應的所有兩兩連接的線路。需要注意的是,由於芯片翻轉,DDR的接口和線路目前全部朝外,沒有再通過芯片底部了。

IFIS上則需要另外兩個層,層C上滿足了另兩個核心的DDR通道和IFIS一半的連接需求(和IFOP連接本質相同),層D和層C類似,只是DDR的通道和IFIS連接有一些改變。

值得一提的是,對於完全連接所有四顆核心而言,實際上每個芯片只需要3個IFOP鏈路就能完成需求,但是AMD還是為每個芯片加入了4個鏈路,以便在4個基層中適應所有必要的路由需求。這意味著每個芯片都有1個鏈路會被關閉掉,而不是簡化封裝。

sTR4接口和封裝

對於HEDT市場,AMD首次推出了sTR4的封裝和相應的接口。這個封裝和接口使用了2個Zeppelin的核心,總計16個CCX內核、32個線程以及4個DDR通道。正如上文所說,sTR4的外觀和SP3看起來相似,但實際上是有很大不同的。

在雙芯片配置中,芯片之間的兩兩連接需求被大幅度降低,因此AMD實際上只需要使用2個IFOP鏈路就可以將兩個核心連接在一起。

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲sTR4接口的處理器中包含了四個硅片,其中左上和右下都是機械性佔位模塊。

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲sTR4接口的產品內部鏈路圖。

此外,每個芯片還能夠提供2×16的PCIe 3.0通道以實現總共64個PCIe 3.0通道。剩餘的兩個位置使用的是機械性佔位模塊,不具有任何功能和線路,其存在的意義很可能是考慮頂蓋和散熱器壓力平衡,因此它真的只是硅片而已。

AM4接口和封裝

對於主流臺式機用戶,AMD選擇繼續使用了上代產品就開始使用的AM4插槽。雖然芯片可以提供32個PCIe 3.0通道,但實際上只有24個開放給用戶使用。其原因有可能是AM4插槽本身的問題,另一方面則是AMD將另外4個通道開放給相關芯片組,用於擴展系統的I/O能力。

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲AM4接口的產品沒有額外的鏈路,這是它的正視圖。

越多核心、越大帶寬——不同方案的帶寬淺析

目前已經上市的AMD第一代銳龍Threadripper和EPYC官方支持的最高DDR4頻率約為DDR4 2666,也就是說其MEMCLK為1333MHz。對EYPC而言,這意味著Zeppelin核心之間的單個鏈路帶寬大約為42.667GB/s,一個處理器內部帶寬約為170.667GB/s。

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲實際生產的EYPC服務器系統。

對處理器之間而言,鏈路帶寬由於CRC的考慮大約是8/9,所以單路數據約為37.926GB/s,兩個處理器之間的帶寬約為151.7GB/s。由於數據傳輸速度和內存頻率掛鉤,因此更快的超頻內存將帶來更高的帶寬。對銳龍Threadripper而言的話,由於Zeppelin核心之間沒有那麼多的鏈路,所以帶寬大約為85.33GB/s。

為什麼不是大核心?——成本情況分析

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲EYPC典型的雙路四Zeppelin核心的鏈路帶寬示意圖。

當AMD只生產大芯片時,看起來總面積雖然小了一些,但是考慮製造難度和不復用芯片等因素,大芯片的製造和測試成本將比目前的方案高出40%,當只考慮32核心產品時,AMD估計產能將比現有的4核心版本降低大約17%。最終AMD估計一個完整的32核心大芯片將比現有的4核心版本成本高了大約70%。

銳龍背後的功臣!AMD Zeppelin多核心架構和封裝系統解讀

▲銳龍Threadripper的兩個Zeppelin核心鏈路帶寬示意圖。

需要注意的是,這些數據僅僅適用於完整的32核心版本。相應的,英特爾的Skylake XCC芯片的尺寸大約為700平方毫米,這意味著其產量應該比AMD估計的好一些。此外英特爾還提供了更低的核心數量部件以大幅度降低成本,實際上英特爾的XCC產品從28核心產品一直到4核心都有推出。

AMD:選擇了最適合自己的方案

縱觀整個Zeppelin核心的連接和設計方案,AMD在成本、性能上得到了很好的平衡。對於更多核心的設計而言,不同的路徑會帶來不同的成本、風險和收益。處理器廠商會根據自己的情況和技術儲備,選擇最適合自己的方案,接受各自的優點和缺點。AMD的Zeppelin和與其相配的Infinity Fabric也是非常出色的設計,很好地完成了AMD的需求並得到了市場的歡迎。

接下來,AMD將會按計劃發佈Zen 2和Zen 3架構,除了架構改進之外,我們還將會關注AMD在多核心設計和互聯方面的改進。比如Zen架構在內存數據訪問方面的延遲還是比較高的,尤其是本地數據訪問存在90ns的延遲,在一定程度上影響了Zen架構處理器的最終性能。想必AMD也關注到了這個問題並在著手提出改進方案。如果AMD能很好地對未來新架構上的一些功能進行取捨,並對薄弱之處做出改善的話,Zen家族還將給人們帶來更大的驚喜。


分享到:


相關文章: