2013年9月25日 星期三

Apple A7處理器是怎樣用雙核擊敗八核的




  隨著 Apple 在iPhone 5s上祭出“業界首枚64bit手機處理器”,果粉們似乎找到了新一輪嘲諷Android的武器:Anandtech等權威媒體測試表明,運行頻率僅 1.3GHz的雙核A7處理器,性能堪比 Android 手機中的四核Cortex A15處理器。“Android就知道拼硬件,四核八核做出來,還不如我家 Apple 雙核快,丟臉不丟臉?”

  實測:雙核秒殺四核/八核

  好吧嚴肅一點,讓我們先把得意洋洋的果粉放到一邊。事實上A7處理器“以雙核戰翻四核”這個近乎於神話的結果本來也很有趣,這是否是 Apple 遠遠拋開業 界設計水平的佐証呢?要知道在如今的處理器設計中,在同樣的功耗前提下即便是差距大如英特爾 vs ARM,也幾乎不可能做到一個核心對抗對方兩個核心,更別說是ARM陣營的內部鬥爭了。



A7處理器兼容下一代ARMv8 64bit指令集,核心架構由 Apple 自行設計



跑 Google Octance Java這種單線程性能需求強勁的代碼,iPhone 5s把幾乎所有 Android 手機都轟成了渣



運行Sunspider Javascript測試程式時也獲得了類似結果,GS4大概只有iPhone 5s一半的性能

  誠然,Apple A7是一枚設計優秀64bit的處理器,64bit帶來的額外寄存器資源如果優化得當,應用程式可獲得近乎翻倍的性能提升,但即使在現有的32位環境中,iPhone 5s表現依然搶眼, Apple 是如何做到這點的?



應用程式64位化之後,往往會帶來一些不可思議的性能提升,圖中iPhone 5s運行64位AES加密時性能較32位提升了825%

  要解答這個問題,我們必須梳理一個思維盲區:直到現在,唯性能論者的潛意識里,各家廠商的處理器核心都是差不多的,因此超過一倍的性能差距往往會讓人覺得不可思議。但問題是:不同處理器的核心架構真的差不多嗎?或者我們換個問法:熊的力氣超過人類兩倍,這有什麼奇怪的嗎?

  誰的功勞?

  以拆機聞名的Chipworks日前公佈了A7處理器的核心分析圖,這個問題總算得到了明確的答案。由於A7採用的是 Samsung 28nm HKMG LP工藝,為了更好的對比,我們找來 Samsung 自家的Exynos 5410,兩枚處理器的核心X射線透視圖如下:

  顯而易見, Apple A7的CPU雖然是雙核設計,但是它消耗掉的芯片面積(或者說晶體管數量)與四核Cortex A15幾乎相等。考慮到核心數量的設計只是邏輯層面的差異,半導體芯片運算能力的本質來源依然還是晶體管數,這也就意味著, Apple A7最終表現出與四核心 Cortex A15等同的性能是應該的,而不是不可思議的。

   Apple A7處理器單個核心的面積就接近兩個標準的ARM Cortex A15處理核心,因此A7的單線程性能比Cortex A15強完全正常。同時,由於邏輯核心只有兩個,A7的多線程性能比四個Cortex A15弱也是情理之中。

  總體來看,Apple A7的設計對於晶體管的利用率反而低於Cortex A15,綜合單線程和多線程的性能,A7在使用了相同晶體管的前提下並沒有實現同等的性能,當然這也是正常的,大而少的設計本身就存在難以避免的浪費。

  設計思路的差異

  實際上, Apple A7處理器選擇的是消耗Cortex A15兩倍的資源,去實現一個單線程好於Cortex A15 50%-70%的設計。這樣的選擇是基於IOS系統的需要──iOS是一個對於後台任務限制很嚴格的系統,同時也是一個高度私有化、高度優化的封閉體系,在這樣的體系里 Apple 認為單線程性能更加重要一些,因此作出了這樣的選擇。

  而Android是一個允許後台程式隨意執行和切換的開放系統,在這樣的系統下對於並行度的需求要明顯高過IOS,所以Android走上了多核心 之路,而IOS堅持大核心戰略。這樣不同的需求決定了不同的設計風格,自然也導致了在不同的測試條件下擁有不一樣的表現,而這一切本質上都是正常的:在相 同的半導體工藝環境下,沒有任何人用更少的代價實現了更多的性能,這一切只是取捨。

  那麼,誰的設計更先進,或者說代表了誰的思路更正確?要回答這個問題,你可以假想自己是一個建築設計師。你手頭有100噸混凝土,你是用它去造兩間80平米的大客廳,還是用它去造10個20平米的小居室?答案當然是“取決於要求”。

  如果是土豪拿來當家庭影院,顯然你要把房間造得大一點;如果你要將房子出租給大學生,房間自然是小一些、多一些為妙。嗯,現在我是甲方,我命令你在這兩個設計中選擇一個更“高級”,更“先進”,或者更“正確”的進行設計,你的答案是啥?





. Apple A7處理器是怎樣用雙核擊敗八核的
http://digital1010.blogspot.com/2013/09/apple-a7.html