當前位置:
首頁 > 科技 > 「大」即正義?詳解三星Exynos M3架構

「大」即正義?詳解三星Exynos M3架構

目前移動計算市場中的高性能處理器「玩家」已經所剩不多,除了蘋果和華為這樣自產自銷的廠商外,只有高通、三星還在向第三方廠商提供高性能處理器。三星在2018年1月發布了旗下第三款自研高性能處理器Exynos 9810,採用了全新Exynos M3架構。在三星的描述中,Exynos M3在性能和功耗控制上相比前代產品有大幅進步。那麼,Exynos M3究竟在設計方面有什麼值得關注的地方,其內部設計又有哪些過人之處呢?本文就來和大家一起探討這些問題。

三星進入移動處理器市場不算很早。2010年三星在美國得克薩斯州的奧斯汀建立了三星奧斯汀研發中心(Samsung"s Austin R&D Center),簡稱SARC。當時三星從AMD、英特爾和其他晶元廠商招攬了不少人才,開啟了自己的高性能移動處理器之路。隨後的2012年,首款三星自研高性能處理器架構,也就是Exynos M1開始研發。經過三年多的研發後,以Exynos 8890為名的處理器產品於2016年搭載在三星大受歡迎的手機Galaxy S7上。也正是這一年,三星向外界公布了這個名為「貓鼬Meerkat」的全新處理器架構,人們開始意識到高性能移動計算市場將迎來一位新玩家。

Exynos M1是全新設計的架構,隨後三星的數代處理器都基於它打造。隨著Exynos M1逐步被淘汰,SARC團隊從2015年第一季度開始基於它設計全新的處理器架構,也就是今天的主角Exynos M3。不過在2016年,這個計劃曾發生了一次重要變化,因此Exynos M3的性能、功能等重要指標被進一步拔高。

三星Exynos M1架構

這個變化是於2015年第三季度出現的Exynos M2,實際上Exynos M2最開始只是Exynos M1的製程優化版本,三星希望用10nm LPE優化Exynos M1,後者採用的是14nm LPP工藝。最終在製程提升和架構小改的情況下,Exynos M2的IPC改進效率竟然達到了20%之多,這使得它的性能遠優於Exynos M1,即是晶元頻率還降低了12%。三星通過Exynos M2,實現了一些本來計劃在Exynos M3中實現的功能,因此Exynos M3的設計就需要變得更具侵略性。

然而三星遇到了半導體業界中最無情的規律:無情的一輪又一輪產品研發周期,尤其是IP和晶元發布必須同步。在這種無情的規律下,很多廠商推出了不那麼完美的產品,無論是性能還是功耗,主要原因都是過於嚴格的商業周期使得產品急於推向市場所致。

三星的Exynos M3架構總覽

要了解Exynos M3,就不得不從Exynos M1開始,實際上這兩個架構有頗多相似之處。從Exynos M1到Exynos M3,SARC做出的最大改動在於將微架構寬度從4解碼提升至6解碼,此外還增增加了整數ALU、第二個負載單元和一個大幅度擴展的浮點/SIMD混合單元,計算容量高達前代產品的三倍。

三星Exynos M3架構相關特色總覽

由於三星沒有公開Exynos M2的體系架構,並且也沒有展示與之相關的編譯器機器模型,因此在Exynos M2上到底發生了什麼變化目前不是很清楚。不過三星透漏的一些消息顯示Exynos M2架構的重排序緩衝區已經不再是96隊列了,三星對其進行了微調。相應的在Exynos M3上同樣功能的模塊擴展至228個隊列,這種改進類似於英特爾在新一代產品設計中的變化,儘管這些處理器採用了不同的指令集,不過底層的變化還是存在一些共通之處。

三星Exynos M3架構和Exynos M1架構存在很深的淵源

另一個證據來自於ARM。ARM最新公布的Cortex-A76的ROB隊列入口增加值128,比Exynos M3的ROB看起來小了不少。ARM宣稱這是性能和面積、功耗之間平衡的結果,並且給出數據認為ROB增加7%,性能指標只增加1%。

對於這一點,三星解釋說,ROB的寬度只是一個選擇,它與微架構的其餘部分以及各種緩衝區和後端調度程序容量的設計相關聯,比如微架構深度和寬度能夠相互補充以提高性能。諸如Exynos M3之類的微架構採用的是更寬的方式以便更快地填充ROB,從而獲得更多的性能。總的來說,Exynos M3的設計思路和Exynos M1或者Exynos M2還是存在差異的,旨在提高性能的同時降低成本。

更大的前端

接下來深入了解前段部分的更多細節。在Exynos M3上,三星對分支預測單元和指令拾取單元做出了大量的改進。先看分支預測單元。

Exynos M1的分支預測器與其他的微架構存在不同,其主要特點在於每周期採用兩個分支並且在後端具有兩個分支埠。Exynos M3似乎保持了這個寬度,但是將uBTB從64增加到了128,mainBTB依舊保留了4000鏈路,不過延遲有所降低,性能表現更出色。

Exynos M3架構的前端更大、更寬。

除了設計規格外,Exynos M3的分支預測器的成功率得到了提升,三星宣稱Exynos M3的分支預測錯漏值平均減少了15%。為了證明這個說法,三星發布了一個被稱為MPKI的值,也就是Misses per kilo instructions每千指令錯漏數據值,這個數據的出現有點突然,實際上就連ARM也沒有採用這樣的統計方法,三星解釋MPKI的數據來源是通過監控來自各種應用程序和用例的不斷擴展的4000~6000種代碼,跟蹤分支預測器的性能最終得出。具體數值方面,Exynos M3為3.29,Exynos M2位3.92,也就是說Exynos M3的每千指令錯漏數據值顯著降低了。

另外,分支預測單元和拾取單元分別提供一個解耦的地址隊列和一個解耦的指令隊列,這樣做的優勢在於這些單元可以進行時鐘門控以在必要的時候節約能源。

拾取單元的帶寬也已經加倍,現在每周期最多可以讀取48個位元組,相當於每周期12個32bit指令—這導致拾取單元和解碼單元的容量比率為2∶1,比之前M1中1.5∶1的比率有所增加。三星解釋說,由於需要應對越來越嚴重的分支氣泡問題,因此需要大幅度增加微架構的成本。三星也承認,平均而言所採用分支的距離小於12條指令,但是較大的寬度對臨時的指令突發具有很好的幫助。

隨著這種變化的瞬時功率利用率很高,但是當指令隊列被填充滿甚至比解碼單元的處理速度更快時,由於時鐘門控的存在,它對功耗表現具有正面的影響。在這裡,整體的能效和分支預測器更加緊密相關,因為獲取指令時能耗實際上不重要,只有在更大的「批處理」存在時,在錯誤分支路徑出現時,拋棄指令可能會導致功耗增加。

L1指令緩存部分為64KB,目前還不確定這個是否比Exynos M2增加,但是肯定是Exynos M1微架構的2倍。

指令後備緩衝區(ITLB)已經從256個條目增加到512條目,需要注意的是,三星正在採用三層結構,而不是我們在ARM處理器中看到的結構。Cortex-A75和Cortex-A76分別具有第一季32條和48條uITLB,其中mainTLB一共有1280條目,包括一個1024條目的主表和一個256條目的副表。

三星也提到了一級數據和指令TLB,但是沒有透露它的大小。三星的最後一級統一TLB擁有4096個條目,後文還會提及到它。

中機部分——更寬的解碼、重命名和發送

在架構的中端(三星稱之為mid-machine,中機),我們看到了Exynos M3的6寬度解碼單元。三星在此處沒有披露太多的細節,但是宣稱改進了指令/uOP的融合功能。重命名和調度吞吐量已經重設計以匹配解碼寬度。Exynos M3支持Exynos M1的多調度形式,也就是解碼器發出一個uOP,可以同時調度至多個調度程序,但是它依舊只計算為一個調度和一個條目。

Exynos M3架構中機部分的特性

在整數核心中,Exynos M3設計了兩個額外的調度器,因此Exynos M3現在能夠再前幾代7個的基礎上將uOps繼續提升到9,其中一個新的埠是具有乘法功能的附加ALU單元,這使得MUL的吞吐量加倍,並將簡單整數算術吞吐量提高了25%。輔助的附加埠是第二個AGU,者能夠使核心的負載帶寬加倍。

Exynos M3架構的核心流水線示意圖

浮點巨獸

在浮點核心方面,和之前的微架構相比,三星設計了一個與眾不同的「巨獸」。三星在Exynos M3上增加了第三條管道,增加了在FPU中分派和發布的uOPs。單純就浮點能力而言,Exynos M3在Exynos M1的 FMAC+FADD的基礎上,又增加了3個128bit的FMAC/FADD單元,是的乘法和算數吞吐量增加了三倍之多。就FLOPS而言,這表示從3FLOPS(1xFMAC(2)+1FADD)增加到6FLOPS(3*FMAC(2)),最大吞吐量加倍。

Exynos M3架構大幅度加強了浮點部分

當然因為浮點吞吐量句句增加,所以必須擴展調度程序和物理寄存器以適應這種增加的幅度,Exynos M3將調度窗口從之前的32增加到了63,FP PRF大小也從之前的96擴展到了192。

三星也一直在努力減少延遲,這也適用於浮點流水線。在這裡,乘法單元的周期已經從之前的4個縮減至3個,FMAC從之前的5個下降到了4個,簡單浮點的周期從3縮減至2,浮點除法單元Radix-64經過了升級,降低了計算延遲。

在這裡需要指出的是,ARM雖然在Cortex-A76中大肆宣傳全新的浮點管道,並為他們新的VX數據路徑感到自豪。但實際上從較高的級別來看,三星似乎在Exynos M3上就實現了相似功能,因為Exynos M3具有和Cortex-A76相同的浮點延遲,同時具有更高的執行吞吐量以及更低延遲的ASIMD。

全新的載入/存儲單元

Exynos M3的載入/存儲單元由於增加了第二個128bit的埠,因此讀取帶寬翻倍,負載延遲則維持之前的4個周期不變。存儲方面,延遲為每周期存儲一次延遲僅為1個周期。同樣,Exynos M3依舊具有雙帶寬優勢,因為它的兩個LD單元以128bit/周期的方式進行工作,相比之下Cortex-A75隻有64bit/周期,只有最新的Cortex-A76升級到了128bit/周期。

Exynos M3設計了全新的載入和存儲單元

總體而言,由於LD/ST調度程序的容量已經增加,因此緩衝區也相應增加了一倍。為了更好服務於新的更大規模的微架構,L1數據高速緩存上的未解決的未命中數據值從8增加到12,這意味著在高速緩存未命中旗艦,該單元可以提供多達12個並發數據請求,核心/系統能夠從更高層級的緩存或者內存中獲取數據。

考慮到Exynos M3的微架構寬度,這種可能性似乎很低。相比之下,ARM沒有公開披露Cortex-A75相應的規格,但是他們將MLP/內存級並行作為Cortex-A76的一個重點,後者的L1D可以提供多達20個未解決的未命中數據存儲,這比Exynos M3更多,即使其寬度要更窄一些。

由於三星獨特的設計,因此它的預取器設計需要具有最高質量,以避免任何內存瓶頸的存在,並實現最佳緩存命中操作。實際上三星「混合」預期器已經有所增強,在這裡「混合」的意思意味著能夠處理不同類型內存模式的單個預取器。

在數據方面,三星提到了新的TLB層級結構的相關內容。Exynos M3使用了和Exynos M1相同的32-entry的micro-DTLB設計,以及一個全新的、擁有512-entry的中等DTLB。指令TLB和數據TBL目前都有增強過的、容量更大的統一L2 TLB服務,這個L2 TLB擁有4096-entry,相比前一代的1024翻了兩番。

核心管道 一切都有成本

擴大位處理器架構是需要付出代價的,和Exynos M1架構相比,Exynos M3在管道深度上增加了2個周期,添加了輔助調度階段,以及用於寄存器讀取的第二階段。通常CPU流水線深度計算方法是從預測/分支一直到寄存器回寫,在這種計算方法下,Exynos M3的擁有17級流水線,已經非常深了。Exynos M1隻有15級,而Cortex-A76和Cortex-A75都只有13級。

對Exynos M3架構來說,分支預測錯誤的懲罰周期是16,相比之下流水線級數更少的Exynos M1隻有14個周期。三星沒有透露Exynos M3的微架構是否在各個階段之間有什麼快速路徑來接解決關鍵情況下的延遲問題,Exynos M3和Exynos M1的部分缺點是相比ARM公版,它的拾取和解碼單元比ARM多了2級,寄存器重命名單元多1級以及需要第二個調度階段(再多1級)。三星承認這雖然是一個負面因素,但是為了讓更寬、更大的微架構能按照計劃完成,這樣做也是必要的。

總的來說,奇怪的是三星雖然採用了更深的流水管線,但是實際上並沒有在具體的產品中產生出更為明顯的頻率效應。一般來說流水線級數越多、管線越深,物理頻率上限會越高。Exynos M3目前在頻率和功耗上的表現,讓人們懷疑三星是不是遇到了什麼問題。

全新的三級緩存結構體系

在CPU核心之外,Exynos M3的三級緩存結構體系也值得一看。和Cortex-A76一樣,Exynos M3引入了新的私有L2緩存作為核心和最後一級共享緩存之間的中間級別,新的L2緩存每個核心的容量為512KB。訪問延遲方面,Exynos M3的訪問延遲只有12個周期,這比Exynos M1的22個周期大幅度降低,但是依舊不如ARM公版,ARM公布的Cortex-A75的L2訪問延遲只有8個周期。值得注意的是,在實際的物理實現中,這個數字可能會上升,比如驍龍845在2.8GHz時延遲大約為4.4ns,而2.7GHz的Exynos 9810的延遲大約為4.6ns。帶寬方面,Exynos M3的L2緩存帶寬也增加了一倍,目前實現了32Bit/周期,而之前的Exynos M1則為16Bit/周期。相比之下,Cortex-A75的L2讀取為16Bit/周期,寫入為32Bit/周期。

Exynos M3架構的新三級緩存結構體系

在緩存布局方面,Exynos M3的布局和ARM官方要求存在很大差異。ARM實際上並未允許第三方核心使用DynamiQ/L3緩存系統,所以Exynos M3的相關設計和ARM是沒有任何關係的。

Exynos M3在L3緩存設計上採用了NUCA也就是非同一緩存架構的方案。Exynos M3的L3緩存總計為4MB,分為4個1MB的片區,每個片區分別位於CPU核心的對面。由於布局不均勻,核心和不同緩存片區之間的訪問延遲是有差異的。核心和相鄰最近的緩存片區訪問延遲僅為32個周期,最遠的片區則有44個周期的延遲,三星在典型模式中使用37個周期作為其平均延遲。

和ARM的相關設計相比的話,Exynos M3似乎要更弱一些。Cortex-A75的L3緩存周期僅為25個,實際產品比如驍龍845為11.4ns左右,而Exynos 9810則從11ns左右開始,最長則達到20ns左右。實際上三星的L3緩存實現並受到CPU高頻率的影響較小,因為緩存的布局影響了延遲。

對於這種情況,三星解釋說這種緩存切片的設計方案旨在為高端移動設備之外的不同設計實現更好的可配置性,考慮到三星在汽車行業的野心,這種說法也是有可能的。對於緩存層次結構而言,三星承認最終產品可能沒有達到他們想要的水平,因為L3緩存設計必須考慮各種因素,權衡利弊非常重要。希望三星在下一代產品設計上做得更好。

三星Exynos M1和Exynos M3核心布局圖和性能指標

三星還特別公布了Exynos M1和Exynos M3兩代核心的相關核心布局圖,由於原本數據為英文,本文對一些圖片中涉及到的特殊的名詞翻譯如下:

pL2:專屬L2緩存,圖片中有512KB緩存,分為兩個區塊。

FPB:浮點數據路徑,是指FP和ASIMD執行單元。

FRS:浮點調度程序和FP/向量物理寄存器。

MC:三星稱其為「中核」,主要是指解碼器和重命名單元。

DFX:至調試/測試邏輯,比如DFD是調試設計、DFT是指測試設計、DFM是其它雜項邏輯。

LS:載入、存儲單元,包含64KB L1高速緩存。

IXU:整數執行單元,包含執行單元、調度程序和整數物理寄存器。

TBW:透明緩衝區寫入,包含TLB。

FE:前端,包括分支預測器、拾取單元和64KB L1指令緩存。

Exynos 9810的整個核心平面圖

Exynos 9810的單個核心平面圖

總體而言,和Exynos M1相比,Exynos M3中功能單元幾乎所有方面的尺寸都大大增加,最終產品尺寸為2.52平方毫米用於內核,還有0.98平方毫米的512KB L2緩存。

Exynos M1架構的核心布局圖

Exynos M3架構的核心布局圖

在圖形之外,三星還特別提及了對新架構的性能和工作負載的評估。根據三星的數據,Exynos M3核心的最終IPC增長數字大約為59%,正如三星在圖片中展示的那樣,所有的工作負載增長都不是線性的,在高ILP下工作負載增長僅為25%,而MLP工作負載可能沒有增加。在一部分混合負載中,IPC增加能夠高達80%。

Exynos M3架構的IPC提升情況

Exynos M3架構的每瓦特性能情況

進一步分析Exynos的CPU集群

Exynos M3架構和Cortex-A75以及Exynos M2架構的性能對比

三星的未來戰略

Exynos M3對三星的設計團隊來說是一次大挑戰,整個架構幾乎重製,並且必須面對時間壓力。xynos M3原本從2014年第二季度開始,但是隨著Exynos M1的完成和Exynos M2的出現,計劃發生改變,Exynos M3原本的部分設計被分配給Exynos M2,這導致Exynos M3設計異常激進。

Exynos M3在2016年第一季開始修訂,2017年第一季度需要交付RTL給SoC團隊,用於Exynos 9810的第一個EVT0流片。請注意,最終的商用版本是RVT1,其流片完成在2017年中期,商業版本的Exynos 9810在2018年3月最終上市。從開始規划到設計完成,基本上用了一年左右時間。

從架構角度來看,Exynos M3設計還是相當出色的,它的體系結構非常堅實,給人的感覺更像是一顆高性能桌面級處理器。三星似乎在調整微架構性能方面採用了最直接的方法,那就是設計一顆更大的晶元來滿足各種需求。大就是好,雖然在Exynos M3上還有一些不成熟的地方,但是這個規模巨大的架構基礎已經完成。

在Exynos M3之後,三星的SARC團隊現在每年都會推出新的產品,接下來三星還將推出M4架構。從三星架構延發的過往來看,Exynos M2和Exynos M3的IPC增長分別為20%和59%,考慮到ARM接下來的新架構承諾增長大約10%~15%的性能,因此Exynos M3的繼任者M4有可能在性能和功耗表現上超過ARM公版架構。最後,希望三星能夠解決Exynos M3架構和Exynos 9810的弱點,推出新的架構並帶來移動計算的新一輪性能增長。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 微型計算機 的精彩文章:

這個遊戲本不簡單,自帶星戰光劍燈帶,玩遊戲像是有了絕地武士的原力!
小米不再允許行貨和國際版互刷ROM;OPPO全新系列新機宣布…

TAG:微型計算機 |