當前位置:
首頁 > 科技 > 詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

來源:本文由公眾號半導體行業觀察(ID:icbank)翻譯自「anandtech」,作者 Andrei Frumusanu,謝謝。

對於Arm自己的CPU設計而言,2018年是激動人心的一年。去年5月,我們看到了Cortex-A76的推出,以及隨後產生的麒麟980以及Snapdragon 855 SoC形式的晶元。我們對IP印象非常深刻,Arm成功地兌現了其所有性能、效率和面積承諾,從而為2019年的大多數旗艦設備提供了一些出色的SoC和器件。

今年,我們跟進了TechDay的另一個新聞,這一次我們報道了Arm針對Cortex-A76的後續行動:新的Cortex-A77。新一代A77是去年推出的主要架構的直接演變,代表了Arm的全新Austin核心家族的第二個實例。今天,我們將分析Arm如何推動其新微架構的IPC,以及這將如何轉化為即將到來的2019年末/2020年初的SoC和器件的實際性能。

Deimos轉向Cortex-A77

鑒於Arm仍舊保持著每年發布IP的節奏,Cortex-A77的發布並不讓人意外。事實上,今天並不是Arm第一次談論A77:去年8月,Arm在發布2020年前的性能路線圖時調侃了CPU核心:

詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

代號為「Deimos」的新款Cortex-A77繼承了Cortex-A76的設計,並遵循Arm的發展軌跡,每一代Arm的Austin系列CPU都將帶來持續穩定的20-25%的性能提升。

在我們討論新的Cortex-A77之前,我們應該回顧一下Arm的A76性能是如何演變的:

詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

對於Arm及其授權商來說,A76無疑是一個非常成功的核心。全新的微架構與台積電7nm工藝節點的重大改進相結合,帶來了業界有史以來最大的性能和效率飛躍。

其結果是,麒麟980以及Snapdragon 855都比各自的前代產品有了較大的飛躍。高通稱,與上一代配備Cortex-A75核心的Snapdragon 855相比,CPU性能提高了45%,這是有史以來最大的代際飛躍。

雖然性能顯著提高,但我們看到這一代產品的能效提升更令人印象深刻,並直接導致使用新麒麟和Snapdragon SoC的設備的電池壽命得到提高。

雖然A76表現很好,但我們應該記住,它確實有競爭對手。三星今年推出的M4微架構縮小了性能/效率差距,但Exynos CPU在很大程度上仍然落後了一代,儘管今年的工藝節點差異(8nm vs 7nm)加大了這一差距。Arm真正的競爭對手是蘋果的CPU設計團隊:目前A11和A12仍然保持著巨大的性能和效率領先優勢,領先優勢大約相當於兩代微架構。

詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

晶元照片來源:ChipRebel 標註:AnandTech

然而,ARM的強項之一仍然是提供業內最好的PPA。儘管A76的性能無法匹敵蘋果的性能,但它以極小的晶元面積尺寸實現了出色的效率。事實上,這是Arm有意識的設計決策,因為電源效率和面積效率是Arm授權商的首要任務之一。

Cortex-A77:頂層概覽

Cortex-A77是A76的直接微架構繼承者,這意味著新核心在很大程度上保持了前代的特性。Arm指出,構建核心時,供應商可以簡單地升級SoC IP,無需付出太多工作。

詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

實際上,這意味著A77在架構上與A76保持一致,仍然是ARMv8.2 CPU核心,旨在與DynamIQ共享單元(DSU)集群內的Cortex-A55小CPU配對。

與前代相比,基本配置特性(如A77的緩存大小)也沒有變化:我們仍然看到64KB L1指令和數據緩存,以及256或512KB L2緩存。有趣的是,Arm確實為基礎設施Neoverse N1 CPU核心設計了1MB L2緩存選項(它本身來自A76),但選擇保留客戶端(手機)CPU IP上的較小配置選項。

詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

作為A76的演進,A77的性能提升並不會像預期的那樣令人印象深刻,無論是從微架構的角度看,還是從絕對性能的角度看都是如此,因為我們無法期望即將到來新一代SoC有很大的工藝節點改進。

此處,對於大多數客戶而言,A77的產品預計仍在7nm工藝節點上,Arm也宣稱了與前代類似的3GHz峰值目標頻率。當然,由於頻率預計不會有太大的變化,這意味著核心+20%的性能提升可以完全歸功於IP的微架構變化。

為了實現IPC(每時鐘周期指令數)的提升,Arm對微架構進行了重新設計,並引入了一些巧妙的新特性,這通常會增強CPU IP,從而實現更廣泛、更高性能的設計。

Cortex-A77巡禮:邁向6-Wide前端

Cortex-A76在微架構方面代表了一種全新的設計,Arm從頭開始實現了多年CPU設計的知識和經驗。這使得Arm能夠設計出一種在微架構方面具有前瞻性思維的新核心。A76旨在作為Austin系列接下來兩代設計的基準,即今天的新款Cortex-A77以及明年的「Hercules」設計。

詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

A77推出了新功能,其主要目標是提升微架構的IPC。Arm這一代的目標是繼續專註於提供業界最好的PPA,這意味著設計師的目標是提高核心的性能,同時保持A76核心卓越的能源效率和面積特性。

在頻率方面,新核心保持在與A76相同的頻率範圍內,Arm在最佳實現中以3 GHz峰值頻率為目標。

詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

作為對微架構變化的概述,Arm幾乎觸及了核心的每個部分。從前端開始,我們看到了更高的讀取帶寬,它的分支預測能力翻了一番,新的macro-OP運算緩存結構充當了L0指令緩存,它有更寬的中央核心,解碼器寬度了增加50%,新的整數ALU流水線以及改進的載入/存儲隊列和發布能力。

詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

深入到前端,分支預測器的一個重大變化是其超前帶寬從32B/周期翻倍到64B/周期。這一增長的原因通常是前端更寬、功能更強,而分支預測器的速度需要提高,才能充分饋送中央核心。Arm指令的寬度是32位(Thumb為16位),因此這意味著分支預測器每個周期最多可以獲取16個指令。這比中央核心的解碼器帶寬高2.6倍,造成這種不平衡的原因是,每當核心中有分支時,就允許前端儘可能快地趕上。

分支預測器的設計也發生了變化,降低了分支的誤判,提高了預測精度。儘管A76已經具有非常大的分支目標緩衝容量(6K entry),但ARM在新一代設計中再次將其提高了33%,達到8 Kentry。看起來ARM已經放棄了BTB的層次結構:A76有16-entry nanoBTB和64-entry microBTB,而在A77上,這似乎已經被64-entry L1 BTB所取代,後者的延遲為1個周期。

詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

新前端的另一個主要特性是引入了Macro-Op緩存結構。對於熟悉AMD和英特爾的x86處理器核心的讀者來說,這可能聽起來很熟悉,並且類似於這些核心中的Lotusop/MOP緩存結構,實際上,假設它們具有類似的功能是正確的。

實際上,新的Macro-OP緩存充當L0指令緩存,其中包含已解碼和融合的指令(macro-op)。在A77中,架構是1.5K entry,假設macro-op具有與Arm指令類似的32位密度,則相當於48KB左右。

Arm實現緩存的特點是與中央核心深度集成。在指令融合和優化之後,緩存在解碼階段之後(以一種解耦的方式)被填充。在緩存命中的情況下,前端直接從macro-op緩存饋送到中央核心的重命名階段,從而削減核心的有效流水線深度的周期。這意味著核心的分支錯誤預測延遲已從11個周期減少到10個周期,即使它具有13個周期設計的頻率能力(+1解碼,+1 branch/fetch overlap,+1dispatch/issue overlap)。雖然我們目前沒有新核心的最新數據,但Arm的數據非常好,因為其他核心的誤判率明顯更差(三星M3、Zen1、Skylake:約16個周期)。

Arm使用1.5K entry緩存的理由是,他們的目標是在測試套件工作負載中達到85%的命中率。容量越小,命中率就越低,而緩存越大,回報就越低。相對於64KB L1緩存,1.5K MOP緩存的大小約為面積的一半。

MOP緩存還允許向中央核心提供更高的帶寬。該結構能夠以64B/周期的速度饋送重命名階段,同樣顯著高於核心的重命名/分派能力,而且這種不平衡加上更「胖」的前端帶寬允許核心隱藏分支和流水線刷新。

Arm談到了一些「動態代碼優化」:此處,核心將重新安排操作,以更好地適應後端執行流水線。需要注意的是,這裡的「動態」並不意味著它實際上是可編程的(類似於英偉達的 Denver代碼翻譯),邏輯被固定在核心的設計上。

詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

最後談到中央核心,我們看到核心的帶寬有了很大的提升。Arm將解碼器的寬度從 4-wide增加到6-wide。增加的寬度也使得核心的重排序緩衝區從128個entry增加到160個entry。值得注意的是,高通公司的Cortex-A76已經出現了這種變化,儘管我們無法確認所採用的確切尺寸。由於Arm仍然負責RTL的更改,所以如果是完全相同的160 entry ROB,我也不會感到驚訝。

同樣,當有MOP緩存命中時,中央核心可以繞過它的解碼階段,從而削減一個周期。

Cortex-A77巡禮:添加ALU和更好的載入/存儲

在介紹了前端和中央核心之後,我們轉到Cortex-A77的後端,研究Arm對執行單元和數據流水線做了哪些更改。

詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

在核心的整數執行端,我們看到增加了第二個分支埠,這與前端的分支預測器帶寬加倍一致。

我們還看到它添加了額外的整數ALU。這種新的單元介於簡單的單周期ALU和現有的複雜ALU流水線之間:它自然仍具有單周期ALU操作的能力,但也能夠支持更複雜的2周期操作(一些移位組合指令、邏輯指令、移動指令、測試/比較指令)。Arm表示,新流水線的添加帶來了驚人的性能提升:隨著核心變得越來越寬,後端可能會成為瓶頸,這就是執行單元需要與核心的其餘部分一起增加的情況。

執行核心的一個更大的變化是統一了問題隊列。Arm解釋說,這樣做是為了通過添加執行埠來保持核心的效率。

最後,現有的執行流水線沒有發生太多變化。一個延遲改進是複雜ALU上的整數乘法單元的流水線操作,這使得它可以實現2-3個周期的乘法,而不是4個周期。

奇怪的是,Arm沒有過多提及Cortex-A77的浮點/ ASIMD流水線。此處,A76「最先進」的設計似乎足以讓他們把精力集中在這一代核心上。

詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

在載入/存儲單元中,我們仍然可以找到兩個單元,但是Arm在單元中添加了兩個額外的專用存儲埠,這實際上使問題帶寬增加了一倍。實際上,這意味著L/S單元是4-wide,具有2個地址生成μOps和2個存儲數據μOps。

問題隊列自身再次統一,Arm將容量增加了25%,以暴露更多的內存級並行。

詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

為了隱藏系統的內存延遲,數據預取非常重要:通過避免等待數據來縮短周期可以極大地提高性能。在我們對Galaxy S10的評測中,我試圖介紹Cortex-A76的新型預取器,並將其與業內其他CPU進行對比。Arm的突出之處在於A76的新型預取器性能出眾,能夠處理一些非常複雜的模式。事實上,A76做得比其他被測試的微架構都要好得多,這是一個相當了不起的成就。

對於A77,Arm改進了預取器,並添加了新的額外預取引擎來進一步改進這一點。Arm對這裡的細節守口如瓶,但Arm承諾增加模式覆蓋範圍和更好的預取準確性。其中一個變化被稱為「增加的最大距離」,這意味著預取程序將在更大的虛擬內存距離上識別重複的訪問模式。

A77中新增的一個功能稱為「系統感知預取」(system-aware prefetching)。Arm試圖解決在不同系統的載入中必須使用單個IP的問題;某些系統可能具有比其他系統更好或更差的內存特性,比如延遲。為了處理內存子系統之間的這種差異,新的預取器將根據當前系統的運行狀況改變運行狀況。

我的想法是,在某些DVFS條件下,這可能意味著一些有趣的性能改進:預取程序將根據當前的內存頻率改變它們的運行狀況和侵略性。

這種新系統感知的另一個方面是更多地了解DSU的L3緩存的緩存壓力。如果其他CPU核心非常活躍,核心的預取程序就會看到這一點,並降低其侵略性,以避免不必要地衝擊共享緩存,從而提高整體系統性能。

性能目標:IPC提升20~35%

Cortex-A77看到了一些有趣的微架構變化,這些變化有望提高性能。現在的問題仍然是,目標性能提高的最終結果是什麼?

在公布的性能改進方面,Arm選擇保留SPEC2006、2017、GeekBench4和LMBench內存帶寬。我們這裡的重點將放在SPEC2006上,因為它仍然是移動設備中最相關的基準。

詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

在SPECint2006上,A77承諾IPC將提升23%左右,而SPECfp2006則宣稱將提升35%。整數工作負載的23%的增長與我們對CPU核心的預期基本一致,但是我必須承認,FP工作負載的30-35%的增長是相當令人驚訝的,特別是因為我們還沒有看到核心的FP執行單元有任何重大的變化。這裡的一種解釋是,SPEC的FP測試套件比整數套件佔用更多內存,Cortex-A77的各種微架構改進在這些工作負載中更明顯。

去年,我對A76在兩個頻率點的性能和效率進行了預測,結果非常接近麒麟980和Snapdragon 855的實際位置。對於Cortex-A77則應該更加直觀,因為我們不會在下一代7nm SoC中看到主要的工藝節點變化。

基於麒麟980目前的結果,我簡單地基於已發布的2.6 GHz Cortex-A77 SoC的IPC提升來推斷性能。值得注意的是,雖然Arm今年再次談到了A77的3 GHz目標頻率,但我並不看好供應商在即將到來的SoC中達到這個頻率,因此我的預測是2.6 GHz。

詳解Arm的Cortex-A77 微架構:不斷提升的性能|半導體行業觀察

就性能而言,整數套件會有一些明顯的改進,但是浮點結果要有趣得多。果真如此的話,那麼A77將超過蘋果的A11的FP性能,即使我們不期望工藝節點有大的改進,這也將是相當大的代際推動力。不過值得注意的是,今年晚些時候,A77將不得不與蘋果的A13以及三星的下一代M5核心展開競爭。

Arm承諾,A77的能效將與現有的A76 SoC保持一致。因此,在峰值性能時,兩個CPU核心將使用相同的能量來完成設置的工作負載。然而,A77性能的提高有一個缺點:功耗的增加,它與性能數字的增加成線性關係。後者增加的功耗似乎會達到峰值頻率運行兩個以上核心的水平,這在移動SoC中會有更大的問題。幸運的是,大多數供應商已經從4個全速的大核心轉向2+2或3+1設計,其中只有一個或兩個高功率大核心。

值得注意的是,雖然我們在這裡談論的是大核心,但A77據說只比A76大17%,仍然比競爭對手的下一代最好的微架構小得多。

結束語

總體而言,Cortex-A77今天宣稱的變化並不像我們去年在A76上看到的那樣大,也不像今天新發布的Arm新ValHall GPU架構和G77 GPU IP那樣大。

然而,Arm通過A77成功實現的是繼續執行他們的路線圖,這在競爭環境中是非常重要的。A76實現了Arm的所有承諾,最終成為一個性能極佳的核心,同時保持了驚人的效率,並在密度上明顯領先於競爭對手。在這方面,Arm的主要客戶仍然非常注重在他們的產品中擁有最好的PPA,而Arm也在這方面提供服務。

A77的一大驚喜是,它的浮點性能提升了30~35%,比我對核心的預期要高得多,而在移動領域,網頁瀏覽是恰巧是考驗浮點運算的殺手級應用,所以我期待著未來擁有A77的SoC會有怎樣的表現。

但即使是在整數工作負載中,20~25%的IPC提升也絕對是了不起的改進,我們相信ARM能夠保持A76的能效。功耗將略有上升,但我認為業界已經表明,今天的移動設備可以正確處理至少兩個更高功率的核心,因此未來的SoC應該繼續使用大+中+小CPU配置。

來自供應商的A77 SoC預計仍將是7nm工藝——高通和海思顯然是採用該核心技術的兩家領先客戶,我預計其時間框架與上一代晶元組類似。目前,Arm正在實現他們承諾的每年20~25%的CAGR,我們相信,這將在可預見的未來幾代產品中繼續下去。

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

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


請您繼續閱讀更多來自 半導體行業觀察 的精彩文章:

全球CMOS圖像感測器廠商最新排名:黑馬殺出|半導體行業觀察

TAG:半導體行業觀察 |