隨著蘋果在iPhone5s上祭出“業(yè)界首枚64bit手機處理器”,果粉們似乎找到了新一輪嘲諷Android的武器:Anandtech等權(quán)威媒體測試表明,運行頻率僅1.3GHz的雙核A7處理器,性能堪比安卓手機中的四核Cortex A15處理器?!癆ndroid就知道拼硬件,四核八核做出來,還不如我家蘋果雙核快,丟臉不丟臉?”
實測:雙核秒殺四核/八核
好吧嚴肅一點,讓我們先把得意洋洋的果粉放到一邊。事實上A7處理器“以雙核戰(zhàn)翻四核”這個近乎于神話的結(jié)果本來也很有趣,這是否是蘋果遠遠拋開業(yè)界設計水平的佐證呢?要知道在如今的處理器設計中,在同樣的功耗前提下即便是差距大如英特爾vs ARM,也幾乎不可能做到一個核心對抗對方兩個核心,更別說是ARM陣營的內(nèi)部斗爭了。
A7處理器兼容下一代ARMv8 64bit指令集,核心架構(gòu)由蘋果自行設計
跑谷歌Octance Java這種單線程性能需求強勁的代碼,iPhone 5s把幾乎所有安卓手機都轟成了渣
運行Sunspider Javascript測試程序時也獲得了類似結(jié)果,GS4大概只有iPhone 5s一半的性能
誠然,Apple A7是一枚設計優(yōu)秀64bit的處理器,64bit帶來的額外寄存器資源如果優(yōu)化得當,應用程序可獲得近乎翻倍的性能提升,但即使在現(xiàn)有的32位環(huán)境中,iPhone 5s表現(xiàn)依然搶眼,蘋果是如何做到這點的?
應用程序64位化之后,往往會帶來一些不可思議的性能提升,圖中iPhone 5s運行64位AES加密時性能較32位提升了825%
要解答這個問題,我們必須梳理一個思維盲區(qū):直到現(xiàn)在,唯性能論者的潛意識里,各家廠商的處理器核心都是差不多的,因此超過一倍的性能差距往往會讓人覺得不可思議。但問題是:不同處理器的核心架構(gòu)真的差不多嗎?或者我們換個問法:熊的力氣超過人類兩倍,這有什么奇怪的嗎?
誰的功勞?
以拆機聞名的Chipworks日前公布了A7處理器的核心分析圖,這個問題總算得到了明確的答案。由于A7采用的是三星28nm HKMG LP工藝,為了更好的對比,我們找來三星自家的Exynos 5410,兩枚處理器的核心X射線透視圖如下:
顯而易見,蘋果A7的CPU雖然是雙核設計,但是它消耗掉的芯片面積(或者說晶體管數(shù)量)與四核Cortex A15幾乎相等。考慮到核心數(shù)量的設計只是邏輯層面的差異,半導體芯片運算能力的本質(zhì)來源依然還是晶體管數(shù),這也就意味著,蘋果A7最終表現(xiàn)出與四核心Cortex A15等同的性能是應該的,而不是不可思議的。
蘋果A7處理器單個核心的面積就接近兩個標準的ARM Cortex A15處理核心,因此A7的單線程性能比Cortex A15強完全正常。同時,由于邏輯核心只有兩個,A7的多線程性能比四個Cortex A15弱也是情理之中。
總體來看,Apple A7的設計對于晶體管的利用率反而低于Cortex A15,綜合單線程和多線程的性能,A7在使用了相同晶體管的前提下并沒有實現(xiàn)同等的性能,當然這也是正常的,大而少的設計本身就存在難以避免的浪費。
設計思路的差異
實際上,蘋果A7處理器選擇的是消耗Cortex A15兩倍的資源,去實現(xiàn)一個單線程好于Cortex A15 50%-70%的設計。這樣的選擇是基于IOS系統(tǒng)的需要——iOS是一個對于后臺任務限制很嚴格的系統(tǒng),同時也是一個高度私有化、高度優(yōu)化的封閉體系,在這樣的體系里蘋果認為單線程性能更加重要一些,因此作出了這樣的選擇。
而Android是一個允許后臺程序隨意執(zhí)行和切換的開放系統(tǒng),在這樣的系統(tǒng)下對于并行度的需求要明顯高過IOS,所以Android走上了多核心之路,而IOS堅持大核心戰(zhàn)略。這樣不同的需求決定了不同的設計風格,自然也導致了在不同的測試條件下?lián)碛胁灰粯拥谋憩F(xiàn),而這一切本質(zhì)上都是正常的:在相同的半導體工藝環(huán)境下,沒有任何人用更少的代價實現(xiàn)了更多的性能,這一切只是取舍。
那么,誰的設計更先進,或者說代表了誰的思路更正確?要回答這個問題,你可以假想自己是一個建筑設計師。你手頭有100噸混凝土,你是用它去造兩間80平米的大客廳,還是用它去造10個20平米的小居室?答案當然是“取決于要求”。
如果是土豪拿來當家庭影院,顯然你要把房間造得大一點;如果你要將房子出租給大學生,房間自然是小一些、多一些為妙。嗯,現(xiàn)在我是甲方,我命令你在這兩個設計中選擇一個更“高級”,更“先進”,或者更“正確”的進行設計,你的答案是啥?