過去的幾年里,蘋果的芯片設(shè)計團隊一直在架構(gòu)設(shè)計和制造工藝兩條路線上穩(wěn)居業(yè)界最前沿,此番隨新一代iPhone XS一齊亮相的A12處理器同樣保持了這份優(yōu)良傳統(tǒng),它是業(yè)界第一個實現(xiàn)量產(chǎn)應(yīng)用的7nm移動SoC芯片。
一般來說制程的數(shù)字越小,晶體管的Metal Pitch和Gate Pitch等特征尺寸就越小。雖然最近幾年制程的命名逐漸脫離了與實際物理尺寸之間的關(guān)聯(lián)而轉(zhuǎn)向商業(yè)化名稱,但它們?nèi)匀淮碇w管密度的飛躍,供應(yīng)商能夠在相同的芯片面積中塞入更多晶體管以提升性能。
不久前,外媒TechInsights對iPhone XS進行了拆解并為A12芯片進行了X光掃描,我們可以借由他們分享的透視圖對A12進行一波深入的分析和猜想。
A12的主要性能模塊均位于芯片的右方和下方,其中最右側(cè)是占地面積最大的GPU集群,4顆核心2*2對稱排列,將一小塊公用電路夾在中間。左側(cè)緊挨著GPU集群中腰的是CPU和GPU的共享緩存(L3緩存),下方是低功耗CPU核心集群,左方是的高性能CPU核心集群,最左邊則是8核NPU。
GPU和CPU的共享緩存是整個SoC緩存體系的一部分,層級位于內(nèi)存控制器和獨占緩存之間。由于處理器訪問內(nèi)存要消耗掉大量電力,使用片上共享緩存可以節(jié)能降耗,且由于數(shù)據(jù)的局部性,性能還會有所提升。
從圖上可以看出,A12的共享緩存被劃分成了4個區(qū)塊,而此前自A7至A11這5代處理器均為2區(qū)塊設(shè)計。緩存區(qū)塊的加倍很有可能代表著緩存性能有了很大提升,這個在稍后的測試中再見分曉。
最后, NPU可以說是此次A12中進化幅度最大的一個性能模塊,核心數(shù)從A11的雙核激增為8核,實際性能更是從A11的0.6TOP暴漲至5TOP,提升近9倍。需要注意的是,有傳言稱此前A11的NPU使用的是CEVA的架構(gòu)設(shè)計,不過直到現(xiàn)在也沒有得到證實,而此次蘋果A12的網(wǎng)頁上明確提到了“Apple-designed”,這意味著這次的NPU架構(gòu)的確是出自蘋果的自主研發(fā)。
縱觀A11和A12中不同模塊的面積變化,可以清晰的看到臺積電全新7nm制程的優(yōu)勢。鑒于幾乎所有的模塊架構(gòu)都有了變化,無法計算出7nm制程的晶體管密度有多大提升,不過若以單個GPU核心作為參考,在A12中相比A11中的面積減小了37%。
此次A12的大核心代號為“Vortex(旋風(fēng))”,相比A11的“Monsoon(季風(fēng))”最大的改進在于L1數(shù)據(jù)緩存和指令緩存雙雙翻倍,均從64KB增加到了128KB。人們一直很想搞清楚的一個問題是,蘋果處理器的緩存體系到底具有怎樣的結(jié)構(gòu),現(xiàn)在我們可以通過使用不同隊列深度測試內(nèi)存延遲來一窺端倪。
測試結(jié)果是,L1緩存的延遲拐點從64KB轉(zhuǎn)移到了128KB,這很正常,但在L2緩存的延遲在3MB~6MB范圍內(nèi)會一直持續(xù)增加,而這種情況僅在以完全隨機的模式訪問時發(fā)生,在較小的訪問窗口中,L2緩存的延遲從3MB到6MB又是一直平坦的。
在隊列深度超過L2緩存的容量后,Monsoon核心的延遲曲線會進一步增加4MB左右,Vortex核心的曲線則會一直延續(xù)8MB,這便是二者的共享緩存容量范圍,再往后便進入了內(nèi)存的領(lǐng)域。這與在芯片透視圖上實際看到的情況很相符,A12的共享緩存不僅分區(qū)數(shù)量加倍,容量也從4MB增加到了8MB。
而代號為“Tempest(暴風(fēng))”的小核心這邊情況則稍有些復(fù)雜,乍看之下可能會認(rèn)為A11中代號為“Mistral(干冷的北風(fēng))”的小核心只有512KB L2緩存而A12則有1.5MB,但實際上這只是緩存電源管理策略造成的假象。通過延遲圖表可以看出,Mistral核心在768KB和1MB處存在明顯的波動,而Tempest核心的類似波動則發(fā)生在2MB處。
綜合以上數(shù)據(jù),可以得出下表中的數(shù)據(jù):
A12的大核心L2緩存結(jié)構(gòu)相比A11沒有任何變化,兩者都有128個SRAM塊,每個SRAM塊大小為48KB。而A12的小核心L2緩存容量翻倍,意味著SRAM塊數(shù)從16個增加到了32個。
不過,蘋果在A11和A12上使用的緩存電源管理策略允許在數(shù)據(jù)粒度較小時只激活部分緩存電路,在A11上這個粒度應(yīng)該是256KB,而在A12上這個粒度應(yīng)該是512KB。這也讓我們更加有理由認(rèn)為A11的小核心L2緩存容量是1MB,A12則是2MB,這也意味著每個SRAM塊大小為64KB。
然而再回過頭看大核心,雖然我們之前認(rèn)為其容量為6MB,不過仔細(xì)觀察可以發(fā)現(xiàn)其曲線在8MB處有一些變化。曲線的變化預(yù)示著測試數(shù)據(jù)的尺寸正在接近緩存容量的邊界,這使我們猜測A11和A12的大核心實際上有8MB L2緩存。
總而言之,蘋果處理器的緩存方面毫不吝惜晶體管的使用,A12在這方面則更進一步,整顆SoC上的各級緩存超過了16MB,這樣不惜血本的規(guī)模真的足以讓高通三星等公司同時期的旗艦產(chǎn)品無比汗顏。
在GPU方面,業(yè)界普遍對A12有著很高的期望,不僅僅是在性能方面,同樣也在架構(gòu)方面。
去年,Imagination發(fā)布了一份新聞稿,稱蘋果計劃在未來15~24個月內(nèi)不再在新產(chǎn)品中使用其知識產(chǎn)權(quán)。
撇去Imagination股票價格的崩潰以及隨后賣身的命運不談,盡管蘋果確實聲稱A11的GPU為自主設(shè)計,但它看起來仍然像是從Imagination的Rogue架構(gòu)衍生而來,依然是基于TBDR(Tile Base Deffered Rendering,Imagination的專利渲染技術(shù)),只不過A11 GPU一顆核心的規(guī)模就相當(dāng)于A10的兩顆而已。
而A12代號為“G11P”的GPU仍然與A11的GPU有著非常明顯的相似之處,各個功能塊似乎都位于相同的位置并以類似的方式構(gòu)造。蘋果表示A12 GPU最大的進步是支持顯存壓縮,而這也就意味著蘋果此前使用的GPU都不支持顯存壓縮(喵喵喵???),以及顯存壓縮可以顯著提升GPU性能。
所謂顯存壓縮,指的是從GPU到顯存的透明幀緩沖區(qū)壓縮。PC端像NVIDIA和AMD這樣的廠商已經(jīng)應(yīng)用這一技術(shù)N多年了,即使在內(nèi)存帶寬沒有增加的情況下,它也能提高GPU的性能。移動SoC的GPU也需要內(nèi)存壓縮,這是因為移動SoC的帶寬相比桌面級GPU更加有限。
Arm的AFBC是移動領(lǐng)域最公開談?wù)摰娘@存壓縮方案,高通和Imagination等其他廠商也都有自己的顯存壓縮技術(shù)。相比之下蘋果在A12上剛剛引入這一功能似乎太晚了,不過這也意味著A12將從中獲得效率和性能上的顯著提升。
在談及Vortex核心之前,首先需要了解一下蘋果新SoC的頻率。在過去幾代中,蘋果一直在穩(wěn)步提高其大核心的頻率,同時也提升了微架構(gòu)的IPC。下表是A12和A11的頻率表:
A11和A12在單大核心滿載時的最高頻率分別為2380MHz和2500MHz;雙大核心滿載頻率分別為2325MHz和2380MHz。而在小核心加入工作后,A12的大核心頻率仍被設(shè)計為穩(wěn)定在2380MHz,而A11則會進一步下調(diào)至2083MHz。
與愈發(fā)激進的大核心相比,A12的小核心部分則更顯保守。在只啟動一顆小核心時,A11的頻率為1694MHz,而A12則為1587MHz;啟動兩顆和三顆時A11為1587MHz,A12為1562MHz;而在四顆小核心滿載時,A11仍能保持在1587MHz,而A12則進一步降至1538MHz。
正如之前所提到的,蘋果在A12的緩存結(jié)構(gòu)和內(nèi)存子系統(tǒng)上投入了大量的工作?;氐骄€性延遲圖上,我們看到以下針對大核和小核的完全隨機延遲的行為:
大核心方面,與A11的Monsoon核心相比,A12的Vortex核心僅有5%頻率提升,但L2緩存的絕對延遲從約11.5ns降至約8.8ns,降幅高達29%,這意味著Vortex核心的L2緩存可以在更短的時間內(nèi)完成讀寫訪問。
小核心方面,A12的Tempest核心與A11的Mistral核心延遲表現(xiàn)相似,但A12在L2分區(qū)和電源管理方面又有了很大的變化,允許訪問更大的L2物理區(qū)塊。
這里只進行了64MB隊列深度的測試,顯然延遲曲線在這個數(shù)據(jù)集中并沒有變得平緩,但可以看出內(nèi)存延遲已經(jīng)有所改善。當(dāng)小核心處于活動狀態(tài)時,內(nèi)存控制器DVFS的最大頻率會提高,這也是Tempest核心的內(nèi)存訪問存在較大的差異的原因:當(dāng)大核心上有高負(fù)載時,它們的性能會更好。
A12的共享緩存也發(fā)生了巨大的變化,雖然緩存帶寬相比A11有所降低,但訪問延遲得到了很大改善。
由于蘋果并沒有像Arm和三星一樣公布其架構(gòu)設(shè)計,為了比較Vortex核心的后端特性,我們測試了A12的指令吞吐量,其中后端的性能由其執(zhí)行單元的數(shù)量決定,延遲由其設(shè)計質(zhì)量決定。
Vortex核心與Monsoon核心看起來非常相似,整數(shù)除法和浮點除法的執(zhí)行延遲都減少了2個周期,浮點吞吐量則是翻了一倍。
從架構(gòu)的中端和后端來看,Monsoon核心是一次重要的更新。此前A10處理器的大核心代號為“Hurricane(颶風(fēng))”,其解碼寬度為6,而Monsoon核心解碼寬度增加至7,同時后端的整數(shù)ALU單元也從4個增加到了6個。
Monsoon核心和Vortex核心均有6個整數(shù)執(zhí)行單元(包括2個復(fù)雜單元)、2個加載/存儲單元、2個分支端口和3個浮點/矢量流水線,這樣寬裕的后端執(zhí)行單元規(guī)模遠(yuǎn)遠(yuǎn)超過三星M3和Arm即將推出的Cortex A76。
事實上,如果沒有非典型的共享端口情況的話,完全可以說蘋果的微架構(gòu)在后端單元方面遠(yuǎn)遠(yuǎn)超過其他任何處理器架構(gòu),包括桌面CPU。
SPEC2006是一個重要的基準(zhǔn)測試軟件,它與其他測試軟件的區(qū)別在于所處理的數(shù)據(jù)集更大更復(fù)雜。雖然GeekBench 4已經(jīng)成為行業(yè)中的熱門,但它的測試項目較小,工作負(fù)載也較輕。因此使用SPEC2006作為基準(zhǔn)測試更有代表性,它可以充分展示微架構(gòu)的更多細(xì)節(jié),特別是在內(nèi)存子系統(tǒng)性能方面。
性能測試在一個散熱良好的環(huán)境中進行,可以保證在1~2小時內(nèi)完整運行測試套件不會出現(xiàn)問題。
在左側(cè)軸上,條形圖表示給定工作負(fù)載下的電能消耗情況,越長的條形意味著消耗的電能越多。條形上的文字標(biāo)注顯示的是消耗電能的具體數(shù)值(單位為焦),以及測試期間的平均功耗(單位為瓦)。
在大多數(shù)工作負(fù)載下,A12的大核心頻率比A11高5%,但實際上頻率并不是鎖死的,因而在SPECint2006中,A12的表現(xiàn)平均比A11好24%。
其中增幅最小的是456.hmmer和464.h264ref這兩項測試,這也是SPECint2006套件中成為瓶頸最多的測試。由于A12架構(gòu)方面似乎沒有真正的重大變化,小幅增長主要歸功于更高的頻率以及緩存結(jié)構(gòu)的改進。
而在445.gobmk測試項上A12的改進則非常大,相比A11增幅為27%。這項測試的負(fù)載特征是存儲地址事件中的瓶頸以及分支錯誤預(yù)測。
429.mcf、471.omnetpp、473.Astar、483.xalancbmk以及部分403.gcc測試項對內(nèi)存子系統(tǒng)很敏感,A12在這幾項上取得了30%~42%不等的性能提升,顯然新的緩存結(jié)構(gòu)和內(nèi)存子系統(tǒng)在這方面取得了很大的成效。
在能耗比方面,A12相比A11平均提升了12%,但需要注意的是,這里的能耗比指的是最高性能時的功耗降低了12%,而A12展示出性能相比A11提高了24%,兩個SoC的性能功耗曲線已經(jīng)大不相同。
不過,盡管7nm制程可以降低能耗,但在性能提升幅度最大的基準(zhǔn)測試中,A12的功耗相比A11不降反升,平均功率從3.36瓦增加到了3.64瓦。也就是說,A12花在提升性能上的功耗,要比7nm制程降低的功耗更多一些。
接下來是SPECfp2006測試,由于XCode中沒有Fortran編譯器且它不是NDK的一部分,要讓它在Android上工作非常復(fù)雜,因此我們選擇C和C++基準(zhǔn)測試。
SPECfp2006有更多的內(nèi)存密集型測試,在7次測試中,只有444.namd、447.dealII和453.povray在內(nèi)存子系統(tǒng)達不到標(biāo)準(zhǔn)時才會看到主要的性能回歸。這對A12很有利,其在SPECfp的平均性能增幅為28%,提升最大的433.milc一項甚至提升了75%。同樣的分析適用于450.soplex,優(yōu)秀的緩存結(jié)構(gòu)和內(nèi)存性能帶來了40%的性能提升。
而470.lbm是一項有趣的測試,它展示了蘋果的架構(gòu)與Arm和Samsung比起來有哪些性能優(yōu)勢。470.lbm的特點最代碼中有大量循環(huán),要求架構(gòu)中有更大的指令循環(huán)緩沖區(qū)來優(yōu)化這樣的工作負(fù)載,在循環(huán)迭代中,核心將繞過decode階段并從緩沖區(qū)獲取指令。看起來蘋果的架構(gòu)恰好有某種類似的機制,也有可能是蘋果處理器內(nèi)核的矢量執(zhí)行性能Lbm的熱循環(huán)大量使用SIMD,而高達3倍的執(zhí)行吞吐量優(yōu)勢最終產(chǎn)生了優(yōu)秀的性能。
(高通的Kryo架構(gòu)由于獨特的設(shè)計使驍龍820在這一項上的表現(xiàn)仍優(yōu)于最近的安卓陣營處理器。)
與SPECint測試類似,A12在SPECfp測試中的能耗比有明顯提升,在所有測試中總能量比A11低10%。另一方面A12的功耗也有所增加,平均功耗從3.65瓦上升至4.27瓦,其中433.milc項目的功耗從2.7瓦增至4.2瓦,增加了75%;482.sphinx3項目的功耗則達到了A12所有SPEC測試項中的最大值5.35瓦。
總體而言,蘋果在Vortex核心和內(nèi)存子系統(tǒng)方面的改進,使A12的實際性能比宣傳中的還要強。與目前最強的安卓陣營SoC相比,A12無論在性能上還是在能耗比上都有將近2倍的壓倒性優(yōu)勢,而如果是在正常使用條件下A12的優(yōu)勢可能還會更大。
這也讓我們對今年發(fā)布的三星M3 架構(gòu)有了更好的認(rèn)知,即只有當(dāng)功耗在可控范圍內(nèi)時,更高的功耗才能帶來更高的性能(Exynos 9810的功耗是蘋果上代A11的2倍,但其性能卻只有A11的一半)。
GPU的性能提升是此次A12的最大亮點之一,通過 “簡單的”將GPU從3核擴充為4核,以及引入顯存壓縮技術(shù),蘋果表示A12的GPU性能相比A11提升了50%。
在進入基準(zhǔn)測試之前必須要知道的是,在最近兩三年里,蘋果開始注重注重峰值性能而忽視長時間運行時的穩(wěn)定性能,使用中常常出現(xiàn)過熱降頻導(dǎo)致性能下降。因此蘋果最新GPU的峰值性能和峰值功耗是一個必須關(guān)注的大問題。
在3DMark物理測試中,iPhone XS和A12相比去年的iPhone X取得了很大的進步。3DMark物理測試此前一直對蘋果的處理器不夠友好,這個境遇在A11上才得到了一定的緩解。A12整體上再次提高了SoC的性能和能耗比,最終在本次測試中勝過了驍龍845。
在3DMark測試的圖形部分,iPhone XS的持續(xù)性能比去年的iPhone X提高了41%,不過一加6更加奔放的功耗和溫度限制讓其性能仍然更勝一籌。
不過就性能峰值而言,iPhone XS在3DMark測試中遇到了大問題,如果測試時手機的溫度比較低,就會很快在測試中崩潰。監(jiān)控顯示在低溫時處理器的頻率很高,平臺瞬時峰值功耗可達約7.5瓦,系統(tǒng)無法提供足夠的瞬態(tài)電流,會引起電壓下降,甚至損壞GPU。
除了3DMARK之外,Kishonti的GFXBench多年來一直是行業(yè)標(biāo)準(zhǔn),新的Aztec測試給我們帶來了不同的工作量。不久前Kishonti發(fā)布了GFXBench的5.0版本,這個版本建立在新的渲染引擎上運行,并引入了High Tier和Normal Tier模式下的全新測試場景Aztec Ruins。新的測試更加考驗著色性能,利用更復(fù)雜的效果來強調(diào)GPU的算術(shù)能力。
Normal Tier模式下的Aztec Ruins測試要求相對較低,iPhone XS的峰值性能相較于去年的iPhone X提升了51%,持續(xù)性能則提升了61%,相比一加6則提升了45%。而在High Tier模式下,iPhone XS的持續(xù)性能比iPhone X高出61%,比一加6則高出31%。
功耗方面,由于沒有時間在各種設(shè)備上測量Aztec,所以仍然依賴標(biāo)準(zhǔn)的曼哈頓3.1和T-Rex測試數(shù)據(jù)。
在曼哈頓3.1中, iPhone XS的性能比iPhone X高出75%。這里的改進不僅要歸功于增加的核心,還有顯存壓縮技術(shù)降低RAM功耗的功勞。
在環(huán)境溫度22°C時,A12測試曼哈頓3.1時的峰值功耗達到6瓦。但即使在這樣的峰值功耗下,A12的效率也超過了所有其他SoC,說明蘋果對功耗的控制是非常有效的。在運行測試3分鐘后功率回落至合理的3.79瓦,而此時處理器的能耗比僅相較峰值功耗時提升了16%,證明A12的能耗比曲線非常平坦,6瓦的峰值功耗仍在芯片本身的可控范圍之內(nèi),足見蘋果在芯片設(shè)計上的功力之強大。
在T-Rex測試中,iPhone XS的持續(xù)性能相比iPhone X提升了61%,而功耗與曼哈頓3.1測試時表現(xiàn)相似,峰值功耗略高于6瓦,數(shù)分鐘后降至4W以下,能耗比同樣提升不大。
那么為什么近兩三年的蘋果處理器在峰值性能和持續(xù)性能之間存在如此大的差異呢?實際上這種變化是由于日常GPU應(yīng)用場景的變化,以及蘋果將GPU用于非3D相關(guān)應(yīng)用的加速需求。
蘋果對API棧的垂直集成和嚴(yán)格控制意味著GPU加速成為現(xiàn)實,而峰值性能是一個重要指標(biāo)。蘋果大量將GPU用于各種其他用途,例如在應(yīng)用程序中使用GPU進行相機圖像處理的硬件加速。這些應(yīng)用場景均為事務(wù)性工作負(fù)載,需要較高的峰值性能以盡快處理完成。
相比之下,過去幾年里Android在GPU計算方面一直是一場災(zāi)難,這主要怪沒有在AOSP中支持OpenCL——這使得供應(yīng)商對OpenCL的支持非常不完善。RenderScript由于無法保證性能而從未獲得太多的關(guān)注,Android設(shè)備和SoC的碎片化意味著在第三方應(yīng)用程序基本上無法使用GPU計算。
得益于新的A12處理器,iPhone XS和XS Max展示了業(yè)界領(lǐng)先的性能和效率,并且目前是最佳的游戲移動平臺。不過蘋果還是應(yīng)該在手機的熱量分布上做一些功課,iPhone XS一如上代iPhone X一樣熱量分布過于集中,非常影響使用體驗。
本文來源:雷鋒網(wǎng)