三星CPU架構細節曝光,挑戰高通和華為的武器?

三星CPU架構細節曝光,挑戰高通和華為的武器?

來自專欄半導體行業觀察42 人贊了文章

來源:本文由微信公眾號 半導體行業觀察(ID:icbank)摘譯自「anandtech」。

作為今年HotChips會議的重頭戲之一,我們很高興終於看到三星披官方披露了其今年最新新的CPU設計Exynos M3。

今年1月份,媒體首次報道了三星的新微架構的相關信息,從那時起我們就很清楚,這是一個不容忽視的關注點:因為三星在性能方面取得了巨大的提升,這在他們近些年來的硅設計產品上前所未見。

但在接下來的幾個月中,對於新款Exynos 9810及其M3內核的披露卻越來越少。中間我們有過很多探索,但總不能窺到其內心。當中更是沒有三星的任何內容做參考。

回顧三星這系列架構的發展,對產業來說,這是一個很好的創新和推動。

在2016年的HotChips上,三星首次展示了其初代微架構Exynos M1。據了解,三星的CPU IP是在德克薩斯州奧斯汀的「三星奧斯汀研發中心」(簡稱SARC)開發的,該中心成立於2010年,目標是為三星的S.LSI部門和Exynos晶元組建立內部IP。在這個中心裡,有來自AMD,英特爾和其他公司和高等院校的、才華橫溢的資深專家,後續的內存控制器和自定義互連的出現,就是他們的工作成果。當然,三星首款定製CPU,更是其中的明星。

據我們了解,三星在2012年就開始了Exynos M1的設計,在經歷非常短的開發周期後,這款晶元就Tape-out了。它的首次亮相是在2016年推出的Galaxy S7上,當時這款機器搭載的Exynos 8890就用了這個架構。多年來,SARC一直在向外擴張,2017年,聖何塞的高級計算實驗室(ACL)開業並加入了SARC的聯合章程——為其設計組合中添加了定製GPU IP,他們希望在幾年內將其實現產品化。

Exynos M1是一個從零開始的設計,因此我們很自然期待後續幾代人能將其作為進一步開發的起點。隨著M1的淘汰,SARC團隊在2015年第一季度開始使用現有的M1 RTL設計M3。首先,這是一個增量開發,但在2016年第一季度,由於目標設定得更高,且有更大的性能推動,為此其計劃後來有了比較大的變化。

後來三星又推出了M2 ,值得一提的是,由於M2在整個工作負載中有20%IPC改進,所以即使生產晶元的時鐘速度降低了12%,但是這它的性能還是優於M1。三星在M2中實現了一些最初計划到M3的一些功能,這就使得新的M3設計變得更加激進。

在這裡,三星明確指出了業界最無情的方面之一,那就是在發布周期內,IP和晶元必須同步。我們看到SoC多個供應商的產品,都是為了抓住新產品的商業發布窗口而緊急推向市場。

對比Exynos M3的概述以及M1的原始幻燈片,我們看到了很多的相似之處,但M3在桌面上增加了更多。SARC團隊將微架構寬度從4寬解碼單元(wide decode unit)增加到6,這是新μarch的整體核心特徵。我們看到一個新增的帶有乘法器功能的整數ALU、第二個負載單元和一個大幅擴展的浮點/ SIMD,這就將計算容量提升了三倍之多。

三星從未真正對M2微體系結構公開,並且也沒有與之相關的特定編譯器機器模型,但在今天的披露中,我們看到的一個變化是三星進行了從96到100個條目(entries)的微小調整,重新排序緩衝。正如我們在1月份的第一次μarch披露中所提到的那樣,M3大大擴展到最多228個條目,這使得μarch從這一方面看,與英特爾的核心設計更為相似(儘管我們無法直接進行不同ISA的密度比較,且隨著指令的複雜性而變化)。

當Arm公布了A76的μarch細節,特別是128-entry ROB(這看起來比M3還小)。在他們看來,這是性能和面積/功耗之間的平衡。特別值得一提的是,ROB capacity增加了7%,但只帶來1%的性能提升。

三星解釋說,ROB capacity是一個選擇,它與微架構的其餘部分以及各種緩衝區和後端調度程序容量的設計密切相關 - μarch寬度和μarch寬度相互補充以提高性能,而一個如如M3這樣的,更廣寬度的μarch能夠更快地填充ROB,從而從更大的容量中獲得更強的性能。總的來說,考慮到提高性能和節省成本,M3採用了與M1 / M2不同的設計。

一個更大的前端

深入了解前端的更多細節,我們看到了分支預測器(branch predicto)和fetch單元的各種改進。M1的分支預測器與其他μarch的不同之處在於它能夠在每個周期採用兩個分支並且在後端具有兩個分支埠。M3似乎保持這個寬度,但是將μBTB從64個增加到128個。mainBTB仍保留在4K條目中,但在採用了分支之後,延遲方面已有了明顯提升。

除此之外,分支預測器質量總體上也有了提升,這就使得錯過分支平均減少了15%。有趣的是,三星實際上發布了一個實際的MPKI(Misses per kilo instructions)值,這是迄今為止Arm(或任何供應商?)都沒有看到的東西。在這裡,三星監控來自各種應用程序和用例的,不斷擴展的4000-6000代碼跟蹤套件,以便在開發過程中驗證其性能。

分支預測器和fetch單元分別供給decoupled address隊列和decoupled instruction指令隊列,這樣做或者可以使得這些單元在實現中進行時鐘門控。

fetch單元的帶寬已加倍,現在每個周期最多可讀取48個位元組,相當於每個周期12個32b指令 ,這就讓獲取與解碼容量的比率變為2:1,比1.5:1的比率有了明顯增加( M1中的24B / c,4解碼)。三星解釋說,以應對更廣泛的微架構上越來越大的分支泡沫問題,需要大幅增加這樣的設計。他們承認,平均而言,所採用分支之間的距離小於12條指令,但較大的寬度對臨時指令突發有很大幫助。

雖然這種變化具有很高的瞬時功率利用率,但是當指令隊列(現在是深度的兩倍)被填充得比解碼單元解碼還快時,因為它允許fetch單元被時鐘門控,這就使得它對所使用的功率具有整體凈正面影響,。在這裡,整體能效與分支預測器質量更緊密相關,因為在獲取指令時實際上並不重要。

指令緩存/ L1I為64KB。我們不確定這是否比M2增加,因為它很難測量,但它肯定是M1μarch的兩倍。

指令轉換後備緩衝區(ITLB)已從256個條目增加到512個條目。需要注意的是,三星正在採用三級層次結構,而不是我們在Arm的處理器中看到的結構。A75和A76分別具有第一級32和48條μITLB,其中mainTLB 共有1280個條目,包括1024個條目(頁面最大為64KB)和一個輔助256條目表(頁數> = 1MB)。

三星也有一級數據和指令TLB,但沒有透露L1 ITLB的大小。

Middle-Machine:更廣泛的解碼,重命名和發送

來到Middle-Machine(解碼器,重命名,調度),我們看到了1.5倍寬的解碼單元的這個事實。三星在此處未披露任何細節,但它改進了指令/μOP融合功能。重命名和調度吞吐量匹配解碼寬度; 這裡,重要的是不要嘗試過多地解讀它並將其與Arm的CPU內核進行比較,因為我們正在談論不同供應商之間的不同μOP類型。在這裡,三星μarch支持自M1以來的多調度形式; 解碼器發出一個μOP,可以同時調度到多個調度程序,但在ROB中,他們仍然只將其計為一個調度和一個條目。

在整數核心中,我們看到兩個額外的調度器,因此M3現在能夠發出9μOps,而不是前代產品的7μOps。其中一個新埠是具有乘法功能的附加ALU單元,使MUL吞吐量加倍,並將簡單整數算術吞吐量提高25%。

輔助附加埠是第二負載AGU,其能夠使核心的負載帶寬加倍。

浮點單位「野獸」

在浮點核心中,我們看到了一個與先前的μarch非常不同的「野獸」。在這裡,三星增加了第三條管道,增加了在FPU中發送(dispatched)和發布(issued)的μOP。就簡單的浮點能力而言,M3通過3個128b FMAC / FADD單元,使乘法和算術吞吐量增加了三倍。這意味著吞吐量直接從從3 FLOPS(1x FMAC(2)+ 1x FADD(1))增長到6 FLOPS(3x FMAC(2))。

因為執行吞吐量的急劇增加,所以必須擴展調度程序和物理寄存器文件,也就是說將調度程序從32增加到62,將FP PRF從96增加到192個。

三星一直在努力減少執行延遲,這也適用於浮點流水線。在這裡,乘法單元已經將周期從4個周期削減到3個周期,這也有利於FMAC從5個周期下降到4個周期。簡單的浮點添加將周期從3降到2,與此同時,FDIV能升到Radix-64單元,且顯著減少了分區延遲。

在這裡稍微提一下,我記得Arm已經在A76中大肆宣傳其新的浮點管道已有好幾年了,他們為新核心的「最先進」VX數據路徑感到非常自豪。但三星似乎在擊敗了Arm,因為M3具有相同的浮點延遲,同時具有更高的執行吞吐量以及更低的延遲ASIMD功能。當我們可以並排測試硅產品時,我們將來會更詳細地比較這些。

新負載/存儲單元

在載入/存儲單元中,由於增加了第二個128b的負載埠,我們再次看到讀取帶寬加倍。這裡的負載使用延遲在4個周期內保持不變。存儲帶寬同樣有相應的提升。這一代M3具有雙帶寬優勢,因為它的兩個LD單元工作在128b /周期,而A75則為64b /周期。

總體而言,LD / ST調度程序的容量已經增加,在存儲緩衝區方面,儘管我們沒有確切的值,但可以看到也大概增加了一倍。為了更好地服務於更廣泛的μarch,L1數據高速緩存上的outstanding misses已從8增加到12,這意味著在高速緩存misses期間,該單元可以提供多達12個並發數據請求,而核心/系統從更高層次獲取數據緩存級別或內存。考慮到M3μarch的機器寬度(machine width),這看起來似乎很低 。Arm沒有公開披露A75以及此前產品在這方面的規格,但他們將MLP /內存級並行性作為A76披露的一個重點,這裡L1D提供多達20個outstanding misses。這比M3可以做的更多。

在這裡,三星的預取器需要具有最高質量,以避免任何內存瓶頸,並實現最佳完美cache-hit操作的目標,實際上他們說新的「混合」(hybridized)預取器已經有所增強。在這裡hybridized本質上意味著會有更多的預取者,或者單個預取器能夠處理不同類型的內存模式。

幻燈片再次提到了我們之前在指令方面描述的新TLB層次結構(hierarchy)。在數據方面,我們看到與M1相同的32-entry micro-DTLB,但是現在有一個全新的mid-level DTLB,它有512個條目。指令TLB和數據TLB現在都由增強的和更大的統一的具有4096個條目的L2 TLB服務,而前一代中只有1024個條目。

核心管道:一切都有成本

擴大微架構需要付出成本代價。與Exynos M1相比,M3在其管道深度上增加了兩個周期,並添加了輔助調度階段(secondary dispatch stage),以及用於寄存器讀取(second stage)的第二階段。通常CPU流水線深度計為從預測/分支到寄存器回寫的階段,在這種情況下,M3在17 stages,而M1為15 stages,A75和A76則為13 stages。

Branch misprediction penalty是16個周期,因為有一個驅動周期(drive cycle)回到前端,再次比M1上的14c penalty多2個周期。如果μarch在各階段之間存在任何其他快速路徑,可以減少關鍵情況下的延遲,那麼三星也不會談論。M3和M1的缺點是它的Arm對應物位於3對2級取指和解碼單元(+2級),2對1級寄存器重命名單元(+1),以及需要第二個調度階段(+1)。

三星承認,雖然這是一個負面因素,但為了讓更大的μarch按計劃完成,這是一個必要的「」惡魔,雖然機器在分支誤預測方面做得很好,但這是新μarch的一個大成本。

總的來說,三星的微體系結構選擇實際上並沒有在實際產品中體現出很大的時鐘速度優勢。這似乎只是讓他們在物理設計和限制關鍵路徑方面做得更好,以便在合理的電壓下實現更高的頻率。

一個新的3級緩存層次結構

遠離CPU核心本身,我們正在研究新的L2 / L3緩存層次結構。與A75和A76一樣,M3引入了新的私有L2緩存作為核心和共享最後一級緩存之間的中間級別。新的私有L2包含較低的數據緩存,每個核心的容量為512KB。與共享L2相比,M1中的訪問延遲從22個周期減少到12個周期。三星在這裡的表現,與Arm的A75相比處於劣勢,因為據後者的數據顯示,其L2 hit 延遲只有8個周期。值得注意的是,在實際物理實現的矽片中,由於RAM和物理布局中的設計選擇,這個數字可能會上升。實際上,Snapdragon 845在2.8GHz時的L2延遲測量為 ~4.4ns,而2.7GHz Exynos 9810的數據約為4.6ns。

L2緩存的帶寬也增加了一倍,現在實現了32B /周期,而M1則為16B /周期。作為對比,A75從L2讀取帶寬16B /周期,寫入帶寬則為32B /周期。

當三星最初公布其Exynos 9810的L3緩存是如何工作的時候,我們感覺是有點混亂的但。最終我們得到了澄清,那就是Arm實際上並沒有允許第三方核心插入其DynamiQ集群/ L3系統,也就是說新SoC的硅實現與Arm的對應物無任何關係。

在這裡,我們看到以NUCA((Non-uniform cache architecture:非統一緩存架構)方式實現的大型4MB緩存。總共有4個1MB的片(slice),每個「片」位於CPU核心的對面。由於布局不均勻,核心與切片之間的訪問延遲並不相同。核心訪問相鄰切片有32個周期的延遲,但在CPU和最遠切片之間的訪問則有44個周期的延遲。三星在典型模式中引用了37個周期平均延遲的數據。

在這裡,與Arm的方案相比,M3似乎更弱。

Arm A75的L3 hit有25個周期的延遲。在實際中,我們看到Snapdragon 845達到~11.4ns,而Exynos 9810則測得 11ns到20ns之間。雖然DSU較低的最大時鐘可能是一個缺點,但實際上它在相反情況下也是一個優勢; 當CPU核心的時鐘頻率降低時,他們仍然可以利用快速運行的DSU / L3緩存及其較低的延遲。相反,M3的緩存層次結構與其CPU內核一起減慢。

M1 / M2的匯流排單元處理多達28個outstanding misses,而M3處理多達80個未完成的utstanding misses-,如果這應用到L3或者如果在某個方面L2塊包含在該圖中,則缺乏清晰度。Arm從不談論A75的功能,但詳細說明A76能夠處理L2緩存上的46個outstanding misses,在DSU的L3上有94個outstanding misses。

L3切片之間的數據分區由address hash決定,並且所有切片同時通電。相比之下,較大的SoC中的DSU默認使用兩個片實現,其中每個片可以是一半斷電 -,在斷電能力方面給出L3的1/4的粒度。我不確定SD845是如何在這裡實現的。

最後,三星解釋說,這種切片設計旨在為高端移動設備之外的不同設計實現更好的可配置性,當然這仍然是最優先考慮的因素。但S.LSI在汽車領域也在努力。

對於緩存層次結構總體,三星承認最終產品並未達到他們真正想要的水平。最終產品就像這樣,因為必須進行權衡才能獲得為這一代實現的3級緩存層次結構。在這裡,我認為我們將更加關注下一代M4。

物理布局:理解矽片

三星今年披露了其晶元的核心平面圖,我們很樂於見到這個,以下是對這些術語的一些簡短說明:

pL2: Private L2 cache, here we see the 512KB cache implemented in what seems to be two banks/slices.

FPB: Floating point data path; the FP and ASIMD execution units themselves.

FRS: Floating point schedulers as well as the FP/vector physical register file memories.

MC: Mid-core, the decoders and rename units.

DFX: This is debug/test logic and stands for 「design for X」 such as DFD (Design for debug), DFT (Design for test), DFM (Design for manufacturability), and other miscellaneous logic.

LS: Load/store unit along with the 64KB of L1 data cache memories.

IXU: Integer execution unit; contains the execution units, schedulers and integer physical register file memories.

TBW: Transparent buffer writes, includes the TLB structures.

FE: The front-end including branch predictors, fetch units and the 64KB L1 instruction cache memories.

Exynos 9810平面圖

與M1相比,M3中幾乎所有功能單元的尺寸都大大增加,最終內核功能模塊的面積為2.52mm2,另外還有0.98mm2的512LB L2緩存和邏輯。

Exynos 9810平面圖

在這裡,三星展示了整個集群平面圖,再次標記了4個核心,它們彼此相鄰排列,L2和L3幻燈片也有序地彼此相鄰放置。這種布局似乎節省了一些布局工作,因為每個塊設計一次然後簡單地複製4次。

IPC提高59%

最後,三星談了一下他們的性能分析基礎架構以及它們如何通過RTL和模型模擬運行各種工作負載跟蹤,以便評估設計選擇、發現錯誤並對μarch進行微調。

在這張幻燈片中,我們最終得到了核心IPC增長的官方數字:~59%。

正如我們在圖表中看到的那樣,所有工作負載的增長都不是線性的,切我們看到高ILP工作負載的增長僅有限25%,而MLP工作負載可能則幾乎沒有增加。另外,還有很多混合工作負載的IPC增加了> 80%。

性能和效率:三星的數據

接下來的幻燈片展示了M2,M3和A75的GeekBench4性能表現。代表產品則分別是Exynos 8895,Exynos 9810和Snapdragon 845。

功率效率(Power efficiency)一直是M3的一個重要主題

正如我們在評測中所述,三星的2.7GHz高頻率需要非常高的電壓和功耗。雖然它展示了領先的性能,但最終效率卻低於Exynos 8895的M2。這裡的數字代表有源系統功率,這意味著在CPU,內存控制器和DRAM方面,就像我們在AT測量它一樣。

將時鐘降低到與M2相同的2.3GHz,根據三星的演示,我們在效率方面看到M3的領先。

下圖則顯示了完成工作負載套件的能源使用情況以及測試期間的平均功耗。左邊的條形表示效率,條形越短(焦耳越小),平台效率越高。右邊的條代表性能分數,條形越長,性能越好。

我還重新測試了M3的三個頂級頻率的工作負載; 1794,2314和2704MHz,讓我們更廣泛地了解效率如何隨性能而變化。

總體而言,M3提供了非常動態的結果範圍。在(幾乎)等效的峰值性能與這一代的A75競爭結果相比,M3能夠發揮良好的效率優勢。M3的低性能點仍然優於M2的2.3GHz最高性能 ,同時還具有顯著的功率和能效優勢。

時鐘頻率在2.3GHz的時候,M3的性能則明顯優於A75。

最後在2.7GHz進一步拉大了性能差距,但效率卻很高,比其他任何最新的SoC消耗更多的功耗。

三星的未來戰略與結論

最後,三星更多地討論了該項目的時間表以及如何開展工作。

正如我們在介紹中所說的那樣,M3的計劃在2014年第2季度開始,隨著M1的完成,RTL也在2015年第1季度開始。在這裡,三星改變了節奏和規劃,將最初計劃用於M3的一部分功能放入M2中。在這裡,最初的M3計划進行了修訂,以便在2016年第一季度實現更大的微架構性能推動。

RTL於2017年第一季度交付給SoC團隊,用於Exynos 9810的第一個EVT0流片。值得注意的是,實際生產的矽片是EVT1,其tape-out在2017年中期發生。而最後商用的Exynos 9810在2018年3月上市。

M3對於三星設計團隊來說是一次相當大的突破工作,因為他們不得不經歷一個近乎項目重構的規劃,並且必須應對極端的時間壓力。在截止日期前推出下一代產品。

由於時間限制,三星在這個產品上留下了很多的改進空間,特別是微體系結構中較弱的部分之一——緩存層次結構(cache hierarchy,),這是三星方面表示其並不滿意的東西,這是推動設計團隊努力繼續前進的動力所在。

三星不願意透露任何一種物理實現細節。由於HotChips是一個微體系結構論壇,因此披露信息保留在M3的μarch中。正如我們過去所看到的,當供應商以不同方式實施時,單個微體系結構的性能和功耗特性可能會大不相同。考慮到這一點,在測量最終產品時,很難將矽片的這些相互纏繞的方面分開。

M3看起來像一個整體堅實的微體系結構,感覺更像我們在桌面級產品中看到的。感覺三星在利用μarch的性能方面採取了更直接的方法 ,在許多方面它表現得比Arm更加「兇猛」, 這也解釋了M3的硅尺寸比較大的原因。

在評估IP的效率時,查看更高級別的微體系結構是不夠的,因為晶體管結構的實際電氣工程方面和設計選擇中的細節很容易超過任何明顯的更高級別特性。況且,沒有供應商真的會披露這些細節,更不用說它將遠遠超出公眾讀者的範圍。

在這裡,最後的幻燈片可能是最具啟發性的披露,讓我們一瞥三星未來的戰略:

據說SARC設計團隊現在每年都會有強勁的年度發布節奏和持續改進。事實上,當我在詢問一些不同的設計選擇和規格時,我在M3和A76之間進行比較時,三星提醒我,Arm的新核心的真正競爭將是明年的新款Exynos M4,而不是M3。

到目前為止,我們只發布了兩代改進版,但M2和M3的IPC增長率分別為20%和59%,三星確實發布了雖然短暫但非常強勁的追趕軌跡。

就在幾天前, Arm公開宣布其性能核心路線圖至2020年,揭示了A76繼任者Deimos和Hercules,承諾約15%和10%的代際收益。M3在預計性能方面似乎已達到或超過A76(至少在SPEC2006中),因此根據M4的功率效率,我們可能最終看到三星定製設計的競爭優勢得到回報。

總的來說,我們感謝三星做了如今所見的微架構披露,作為超越Arm的產品,它們在這個秘密行業中是一個相當罕見的事件。希望S.LSI和SARC解決Exynos 9810和M3的弱點,並努力使明年的SoC取得更大的成功。我們一定期待得到它!


推薦閱讀:

TAG:晶元集成電路 | 處理器 | 三星電子Samsung | 半導體 |